当进程因收到信号被终止执行退出后,父进程可以通过wait或waitpid得到它的exit code。
进程被各信号终止的退出状态码总结如下:
信号编号 | 信号名称 | 信号描述 | 默认处理方式 | Exit code |
1 | SIGHUP | 挂起 | 终止 | 1 |
2 | SIGINT | 终端中断 | 终止 | 2 |
3 | SIGQUIT | 终端退出 | 终止、coredump | 131 |
4 | SIGILL | 非法指令 | 终止、coredump | 132 |
5 | SIGTRAP | 跟踪/断点陷进 | 终止、coredump | 133 |
6 | SIGABRT | 终止进程 | 终止、coredump | 134 |
7 | SIGBUS | Bus error | 终止、coredump | 135 |
8 | SIGFPE | 算术异常 | 终止、coredump | 136 |
9 | SIGKILL | 杀死进程(必杀) | 终止 | 9 |
10 | SIGUSR1 | 用户自定义信号1 | 终止 | 10 |
11 | SIGSEGV | 段错误 | 终止、coredump | 139 |
12 | SIGUSR2 | 用户自定义信号2 | 终止 | 12 |
13 | SIGPIPE | 管道断开 | 终止 | 13 |
14 | SIGALRM | 定时器信号 | 终止 | 14 |
15 | SGITERM | 终止进程 | 终止 | 15 |
16 | SIGSTKFLT | 栈错误 | 终止 | 16 |
17 | SIGCHLD | 子进程退出 | 忽略 | 无 |
18 | SIGCONT | 继续执行 | 若停止则继续执行 | 无 |
19 | SIGSTOP | 停止执行(必停) | 暂停执行 | 无 |
20 | SIGTSTP | 停止 | 暂停执行 | 无 |
21 | SIGTTIN | Stopped(tty input) | 暂停执行 | 无 |
22 | SIGTOUT | Stopped(tty output) | 暂停执行 | 无 |
23 | SIGURG | io紧急数据 | 忽略 | 无 |
24 | SIGXCPU | 突破对CPU的时间限制 | 终止、coredump | 152 |
25 | SIGXFSZ | 突破对文件大小的限制 | 终止、coredump | 153 |
26 | SIGVTALRM | 虚拟定时器超时 | 终止 | 26 |
27 | SIGPROF | 性能分析定时器超时 | 终止 | 27 |
28 | SIGWINCH | 终端窗口尺寸发生变化 | 忽略 | 无 |
29 | SIGIO | io时可能产生 | 终止 | 29 |
30 | SIGPWR | 电量即将耗尽 | 终止 | 30 |
31 | SIGSYS | 错误的系统调用 | 终止、coredump | 159 |
34~64 | SIGRTMIN~ SIGRTMAX | 实时信号 | 终止 | 34~64 |
总结
能使进程被终止并产生coredump的信号,进程退出状态码为:信号编号 + 128。如:SIGQUIT信号,它的编码为3,则进程的退出状态码为:131(3 + 128)。
只能使进程终止而不会产生coredump的信号,进程的退出状态码为信号编号本身。