與變量三要素(類型、名字、值)類似的,每個信號也有其必備4要素,分別是:1.編號;2.名稱(即編號的宏定義) ;3.事件(引起信號產生的事件,如段錯誤);4.默認處理動作
可以通過man 7 signal 命令查看:
Signal???? Value???? Action?? Comment
──────────────────────────────────
?SIGALRM????? ?14?????? Term??? Timer signal from alarm(2)
SIGTERM????? ?15?????? Term??? Termination signal
SIGUSR1?? ??30,10,16??? Term??? User-defined signal 1
SIGUSR2?? ??31,12,17??? Term??? User-defined signal 2
名字??????? 編號????? 默認處理方式???????? 事件
重點掌握的信號:2、3、7(總線錯誤)、8、9、10、11、12、13、14、15、17、19和20。要求記住前三個要素(編號、名字和事件)。
在標準信號中,有一些信號是有三個“Value”,第一個值通常對alpha和sparc架構(CPU架構)有效,中間值針對x86、arm和其他架構,最后一個應用于mips架構。一個‘-’表示在對應架構上尚未定義該信號。
不同的操作系統定義了不同的系統信號。因此有些信號出現在Unix系統內,也出現在Linux中,而有的信號出現在FreeBSD或Mac OS中卻沒有出現在Linux下。這里我們只研究Linux系統中的信號(即只是取中間值)。
信號的默認處理方式有五種(記住):Term:終止進程;Ign:忽略信號 (默認即時對該種信號忽略操作); Core:終止進程,生成Core文件(查驗進程死亡原因,用于gdb調試);Stop:停止(暫停)進程;Cont:繼續運行進程。
這里特別強調9) SIGKILL 和19) SIGSTOP信號,不允許忽略和捕捉,只能執行默認動作。甚至不能將其設置為阻塞。
9) SIGKILL:無條件終止進程。本信號不能被忽略,捕捉和阻塞。默認動作為終止進程。它向系統管理員提供了可以殺死任何進程的方法。
19) SIGSTOP:停止進程的執行。信號不能被忽略,捕捉和阻塞。默認動作為暫停進程。