【发布时间】:2013-01-14 00:18:45
【问题描述】:
段错误的进程返回什么错误代码?从我的实验来看,它似乎是“139”,但我想知道为什么会这样以及它有多标准。
【问题讨论】:
标签: c linux unix segmentation-fault runtime-error
段错误的进程返回什么错误代码?从我的实验来看,它似乎是“139”,但我想知道为什么会这样以及它有多标准。
【问题讨论】:
标签: c linux unix segmentation-fault runtime-error
当进程终止时,shell 只存储一个 8 位返回码,但如果进程异常终止,则设置高位。但是由于您的进程因分段错误而终止,因此通常发送的信号是 SIGSEGV(Invalid memory reference),其值为 11。
因此,由于您的进程异常终止,因此您有一个 128,然后您添加终止该进程的信号值 11,您得到 139。
【讨论】:
相关的系统调用(给出终止进程的状态)是waitpid(2)。 139 用于WIFSIGNALED 和WTERMSIG 等...在Linux 上,实际位在内部文件/usr/include/bits/waitstatus.h 中描述,该文件包含在<sys/wait.h> 标头中
wait、waitpid 调用是 standard in POSIX,宏名称也是如此(如 WTERMSIG 等...)。这些宏的实际实现,以及实际的信号编号,因此 shell 给出的代码,都是特定于实现的。
signal(7) Linux 手册页给出了信号的数量。
【讨论】: