(转)Linux进程被信号杀死后退出状态码(exit code)的分析

linux系统下,进程对信号的默认响应方式有5种:

1)  忽略信号,即当做没收到信号一样;

2)  终止进程;

3)  产生核心转储文件,同时进程终止;

4)  停止进程,即暂停进程的执行;

5)  于之前的暂停之后恢复执行;

处理方式2和3都会导致进程终止执行并立即退出,处理方式1、4、5不会造成进程终止执行。因此,可以将信号粗略的分为两类,一类是会导致进程终止并退出的信号;另一类则是不会导致进程终止并退出的信号。

当进程因收到信号被终止执行退出后,父进程可以通过调用wait或waitpid得到它的exit code。进程被各信号终止的退出状态码总结如下:

信号编号

信号名称

信号描述

默认处理方式

Exit code

1

SIGHUP

挂起

终止

1

2

SIGINT

终端中断

终止

2

3

SIGQUIT

终端退出

终止、core dump

131

4

SIGILL

非法指令

终止、core dump

132

5

SIGTRAP

跟踪/断点陷阱

终止、core dump

133

6

SIGABRT

终止进程

终止、core dump

134

7

SIGBUS

Bus error

终止、core dump

135

8

SIGFPE

算术异常

终止、core dump

136

9

SIGKILL

杀死进程(必杀)

终止

9

10

SIGUSR1

用户自定义信号1

终止

10

11

SIGSEGV

段错误

终止、core dump

139

12

SIGUSR2

用户自定义信号2

终止

12

13

SIGPIPE

管道断开

终止

13

14

SIGALRM

定时器信号

终止

14

15

SIGTERM

终止进程

终止

15

16

SIGSTKFLT

栈错误

终止

16

17

SIGCHLD

子进程退出

忽略

18

SIGCONT

继续执行

若停止则继续执行

19

SIGSTOP

停止执行(必停)

暂停执行

20

SIGTSTP

停止

暂停执行

21

SIGTTIN

Stopped (tty input)

暂停执行

22

SIGTTOU

Stopped (tty out put)

暂停执行

23

SIGURG

io紧急数据

忽略

24

SIGXCPU

突破对cpu时间的限制

终止、core dump

152

25

SIGXFSZ

突破对文件大小的限制

终止、core dump

153

26

SIGVTALRM

虚拟定时器超时

终止

26

27

SIGPROF

性能分析定时器超时

终止

27

28

SIGWINCH

终端窗口尺寸发生变化

忽略

29

SIGIO

io时可能产生

终止

29

30

SIGPWR

电量行将耗尽

终止

30

31

SIGSYS

错误的系统调用

终止、core dump

159

34~64

SIGRTMIN~

SIGRTMAX

实时信号

终止

34~64

进一步总结如下:

1.    能使进程被终止执行并产生core dump的信号,它的退出状态码是信号编号+128,比如SIGQUIT信号,它的编号为3,进程收到该信号后会core dump,退出状态码为3+128=131;

2.    只是使进程被终止,而不会产生core dump的信号,它的退出状态码就是信号本身的编号。

————————————————

版权声明:本文为CSDN博主「halfclear」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/halfclear/java/article/details/72783900

相关推荐