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 | 終止 |