信号_Linux下常用的信号有哪些
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 常用信号
信号宏名 |信号编号|说明 |系统默认处理方式
-
| :-: |:- |:-
SIGABRT |6 |终止进程,调用abort函数时产生 |终止,产生core文件
SIGALRM |14 |超时,调用alarm函数时产生 |终止
SIGBUS |7 |硬件故障 |终止,产生core文件
SIGCHLD |17 |子进程状态改变 |忽略
SIGINT |2 |终止进程(Ctrl+C) |终止
SIGIO |29 |异步通知信号 |终止
SIGKILL |9 |无条件终止一个进程,不可以被捕获或忽略 |终止
SIGPIPE |13 |写没有读权限的管道文件时 |终止
SIGPOLL |8 |轮训事件,涉及POLL机制 |终止
SIGTERM |15 |kill PID时默认发送的信号 |终止
SIGQUIT |3 |终止进程( Ctrl+\ ) |终止,产生core文件
SIGSEGV |11 |无效存储访问(指针错误) |终止
SIGUSER1|10 |用户自定义信号1 |终止
SIGUSER2|10 |用户自定义信号2 |终止