Linux信号-进程退出状态码
当进程因收到信号被终止执行退出后,父进程可以通过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的信号,进程的退出状态码为信号编号本身。