段错误返回的进程是什么错误代码?从我的实验来看,它似乎是“139”,但我想知道为什么会这样以及它有多标准。
问问题
14130 次
2 回答
25
当进程终止时,shell 只存储一个 8 位返回码,但如果进程异常终止,则设置高位。但是因为您的进程因分段错误而终止,所以通常发送的信号是 SIGSEGV(无效内存引用),其值为 11。
因此,因为您的进程异常终止,所以您有一个 128,然后您添加终止该进程的信号值 11,您得到 139。
于 2013-01-30T08:45:03.840 回答
11
相关的系统调用(给出终止进程的状态)是waitpid(2)。139 用于WIFSIGNALED
等WTERMSIG
...在 Linux 上,实际位在/usr/include/bits/waitstatus.h
包含在<sys/wait.h>
标头中的内部文件中描述
wait
,waitpid
调用在 POSIX 中是标准的,宏名称(如WTERMSIG
等)也是标准的。这些宏的实际实现,以及实际的信号编号,因此 shell 给出的代码,是特定于实现的。
signal(7) Linux 手册页给出了信号的数量。
于 2013-01-30T08:40:03.047 回答