【问题标题】:What error code does a process that segfaults return? [duplicate]段错误返回的进程是什么错误代码? [复制]
【发布时间】:2013-01-14 00:18:45
【问题描述】:

段错误的进程返回什么错误代码?从我的实验来看,它似乎是“139”,但我想知道为什么会这样以及它有多标准。

【问题讨论】:

    标签: c linux unix segmentation-fault runtime-error


    【解决方案1】:

    当进程终止时,shell 只存储一个 8 位返回码,但如果进程异常终止,则设置高位。但是由于您的进程因分段错误而终止,因此通常发送的信号是 SIGSEGV(Invalid memory reference),其值为 11。

    因此,由于您的进程异常终止,因此您有一个 128,然后您添加终止该进程的信号值 11,您得到 139。

    【讨论】:

      【解决方案2】:

      相关的系统调用(给出终止进程的状态)是waitpid(2)。 139 用于WIFSIGNALEDWTERMSIG 等...在Linux 上,实际位在内部文件/usr/include/bits/waitstatus.h 中描述,该文件包含在<sys/wait.h> 标头中

      waitwaitpid 调用是 standard in POSIX,宏名称也是如此(如 WTERMSIG 等...)。这些宏的实际实现,以及实际的信号编号,因此 shell 给出的代码,都是特定于实现的。

      signal(7) Linux 手册页给出了信号的数量。

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 2016-02-16
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        相关资源
        最近更新 更多