信号_Linux下常用的信号有哪些?

1.5 Linux下都有哪些信号

1.5.1 信号列表 kill -l

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP 6) SIGABRT
7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR111) SIGSEGV     12) SIGUSR2     
13) SIGPIPE     14) SIGALRM     15) SIGTERM16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     
19) SIGSTOP     20) SIGTSTP21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     
25) SIGXFSZ26) 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
  • 在命令行支持kill -l,可以显示所有的信号列表

  • 总共62个信号,也就是说每个进程都可以接收的信号种类有62种。1~64为信号的编号,SIG***为信号的宏名。

  • (1) 为什么这么多信号

    • 每个信号代表着某种事件,一般情况下,当进程收到某个信号时,就表示该信号所代表的事件发生了。
    • 可能发生的事件有很多种,所以有这么多信号,每个信号对应着自己特有的事件。
  • (2)这么多信号,记不住怎么办?

    • (1)35~64:这些信号是Linux后期增设的信号,这些信号不需要关心,不需要了解。
    • (2)1~34:也不是所有的信号都要掌握,我们只关心其中常用的信号
    • (3)就算对1~34中的常用信号,我们的要求是理解,而不是记忆。当忘记了信号名字时,kill -l查看即可。对这些信号,理解是关键。

1.5.2 常用信号

信号宏名信号编号说明系统默认处理方式
SIGABRT6终止进程,调用abort函数时产生终止,产生core文件
SIGALRM14超时,调用alarm函数时产生终止
SIGBUS7硬件故障终止,产生core文件
SIGCHLD17子进程状态改变忽略
SIGINT2终止进程(Ctrl+C)终止
SIGIO29异步通知信号终止
SIGKILL9无条件终止一个进程,不可以被捕获或忽略终止
SIGPIPE13写没有读权限的管道文件时终止
SIGPOLL8轮训事件,涉及POLL机制终止
SIGTERM15kill PID时默认发送的信号终止
SIGQUIT3终止进程( Ctrl+\ )终止,产生core文件
SIGSEGV11无效存储访问(指针错误)终止
SIGUSER110用户自定义信号1终止
SIGUSER210用户自定义信号2终止