linux系统下,进程对信号的默认响应方式有5种:
1) 忽略信号,即当做没收到信号一样;
2) 终止进程;
3) 产生核心转储文件,同时进程终止;
4) 停止进程,即暂停进程的执行;
5) 于之前的暂停之后恢复执行;
处理方式2和3都会导致进程终止执行并立即退出,处理方式1、4、5不会造成进程终止执行。因此,可以将信号粗略的分为两类,一类是会导致进程终止并退出的信号;另一类则是不会导致进程终止并退出的信号。
当进程因收到信号被终止执行退出后,父进程可以通过调用wait或waitpid得到它的exit code。进程被各信号终止的退出状态码总结如下:
进一步总结如下:
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/article/details/72783900
文章目录
linux信号
信号默认处理
程序的优雅退出
Linux错误码:
linux信号
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
1
2
3
4
5
6
7
8
9
10
11
12
13
信号默认处理
kill命令默认发送的信号是SIGTERM;
信号 默认处理方式 是否可捕获 信号发送
SIGKILL 程序直接core 否
SIGTERM 终止程序 是
SIGINT 终止程序 是 ctrl + c
SIGPIPE 终止程序;当向已经关闭的读管道写入数据时,会产生该信号 是
这里有一篇文章对所有信号的默认处理方式有总结:
https://cloud.tencent.com/developer/article/1348342
程序的优雅退出
服务程序中捕获对应的信号,当收到对应信号时,做资源回收。
Linux错误码:
详见链接
————————————————
版权声明:本文为CSDN博主「写到天黑的小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lxb122435677/article/details/90371839