進程信號說明

        進程中的信號是用於進程之間通信的一種簡單消息,通常是下表中的一個標號數值,並且不攜帶任何其它的信息。

       例如當一個子進程終止或結束時,就會產生一個標號爲17 的SIGCHILD 信號發送給父進程,以通知父進程有關子進程的當前狀態。

        關於一個進程如何處理收到的信號,一般有兩種做法:

        一是程序的進程不去處理,此時該信號會由系統相應的默認信號處理程序進行處理;

       二是進程使用自己的信號處理程序來處理信號。

/linux-0.11/kernel/signal.h定義信號如下 :

#define SIGHUP   1
#define SIGINT   2
#define SIGQUIT   3
#define SIGILL   4
#define SIGTRAP   5
#define SIGABRT   6
#define SIGIOT   6
#define SIGUNUSED  7
#define SIGFPE   8
#define SIGKILL   9
#define SIGUSR1  10
#define SIGSEGV  11
#define SIGUSR2  12
#define SIGPIPE  13
#define SIGALRM  14
#define SIGTERM  15
#define SIGSTKFLT 16
#define SIGCHLD  17
#define SIGCONT  18
#define SIGSTOP  19
#define SIGTSTP  20
#define SIGTTIN  21
#define SIGTTOU  22
 

標號
名稱
說明
默認操作
       1 
SIGHUP
(Hangup) 當你不再控制終端時內核會產生該信號,
或者當你關閉Xterm 或斷modem。由於後臺程序沒有控制的終端,因而它們常用SIGUP 來發出需要重新讀取其配置文件的信號。
(Abort)
掛斷控制中斷或進程。
       2 
SIGINT
(Interrupt) 來自鍵盤的終端。通常終
驅動程序會將其與^C 綁定。
(Abort)
終止程序。
       3 
SIGQUIT
(Quit) 來自鍵盤的終端。通常終端驅動程序會將其與^\綁定。
(Dump) 程序被終止併產生dump core 文件。
       4 
SIGILL
(Illegal Instruction) 程序出錯或者執行了一個非法的操作指令。
(Dump) 程序被終止併產生dump core 文件。
       5 
SIGTRAP
(Breakpoint/Trace Trap) 調試用,跟蹤斷點。
 
       6 
SIGABRT
(Abort) 放棄執行,異常結束。
(Dump) 程序被終止併產生dump core 文件。
6
SIGIOT
(IO Trap) 同SIGABRT
(Dump) 程序被終止併產生dump core 文件。
       7 
SIGUNUSED
(Unused) 沒有使用。
 
       8 
SIGFPE
(Floating Point Exception) 浮點異常。
(Dump) 程序被終止併產生dump core 文件。
       9 
SIGKILL
(Kill) 程序被終止。該信號不能被捕獲或者被忽略。想立刻終止一個進程,就發送信號9。注意程序將沒有任何機會做清理工作。
(Abort) 程序被止。
      10 
SIGUSR1
(User defined Signal 1) 用戶定義的信號。
(Abort) 程序被止。
      11 
SIGSEGV
(Segmentation Violation) 當程序引用無效的內存時會產生此信號。比如:尋址沒有映射的內存;尋址未許可的內存。
(Dump) 程序被終止併產生dump core 文件。
      12 
SIGUSR2
(User defined Signal 2) 保留給用戶程序用於IPC 或其它目的。
(Abort) 程序被止。
      13 
SIGPIPE
(Pipe) 當程序向一個套接字或管道寫時由於沒有讀者而產生該信號。
(Abort) 程序被止。
      14 
SIGALRM
(Alarm) 該信號會在用戶調用alarm 系統調用所設置的延遲秒數到後產生。該信號常用判別於系統調用超時。
(Abort) 程序被止。
      15 
SIGTERM
(Terminate) 用於和善地要求一個程序終止。它是kill的默認信號。與SIGKILL 不同,該信號能被捕獲,這樣就能在退出運行前做清理工作。
(Abort) 程序被止。
      16 
SIGSTKFLT
(Stack fault on coprocessor) 協處理器堆棧錯誤。
(Abort) 程序被止。
      17 
SIGCHLD
(Child) 父進程發出。停止或終止子進程。可改變其含義挪作它用。
(Ignore) 子進程停止或結束。
      18 
SIGCONT
(Continue) 該信號致使被SIGSTOP 停止的進程恢復運行。可以被捕獲。
(Continue) 恢復進程的執行。
      19 
SIGSTOP
(Stop) 停止進程的運行。該信號不可被捕獲或忽略
(Stop) 停止進程運行。
      20 
SIGTSTP
(Terminal Stop) 向終端發送停止鍵序列。該信號可以被捕獲或忽略。
(Stop) 停止進程運行。
      21 
SIGTTIN
(Terminal Input on Background) 後臺進程試圖從一個不再被控制的終端上讀取數據,此時該進程將被停止,直到收到SIGCONT 信號。該信號可以被捕獲或
忽略。
(Stop) 停止進程運行。
      22 
SIGTTOU
(TTY Output on Background) 後臺進程試圖向一個不再被控制的終端上輸出數據,此時該進程將被停止,直到收到SIGCONT 信號。該信號可被捕獲或忽略。
(Stop) 停止進程運行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章