14

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

4

2 回答 2

25

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

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

于 2013-01-30T08:45:03.840 回答
11

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

wait,waitpid调用在 POSIX 中是标准的,宏名称(如WTERMSIG等)也是标准的。这些宏的实际实现,以及实际的信号编号,因此 shell 给出的代码,是特定于实现的。

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

于 2013-01-30T08:40:03.047 回答