一个发生段错误的进程返回什么错误代码?

15

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

2个回答

27

当一个进程被终止时,shell只存储一个8位的返回代码,但如果进程是异常终止的,则设置高位。但因为你的进程由于分段错误而终止,通常发送的信号是SIGSEGV(无效内存引用),其值为11。

所以因为你的进程异常终止了,你有一个128,然后加上终止进程的信号值,即11,得到139。


11
相关的系统调用(用于获取已终止进程状态)是waitpid(2)。139代表WIFSIGNALEDWTERMSIG等等...在Linux中,实际的位被描述在内部文件 /usr/include/bits/waitstatus.h 中,该文件从<sys/wait.h>头文件中引入。 waitwaitpid调用在POSIX标准中也是标准的,宏名称(如WTERMSIG等)也是如此。这些宏的实际实现和实际信号编号因此由具体实现决定,即由shell给出的代码是与具体实现相关的。 signal(7) Linux手册页面提供了信号的编号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接