linux系統中定義得訊號可以通過kill -l命令檢視,共定義了64個訊號。
signaldescription
sigabrt
由呼叫abort函式產生,程序非正常退出
sigalrm
用alarm函式設定的timer超時或setitimer函式設定的interval timer超時
sigbus
某種特定的硬體異常,通常由記憶體訪問引起
sigcancel
由solaris thread library內部使用,通常不會使用
sigchld
程序terminate或stop的時候,sigchld會傳送給它的父程序。預設情況下該signal會被忽略
sigcont
當被stop的程序恢復執行的時候,自動傳送
sigemt
和實現相關的硬體異常
sigfpe
數學相關的異常,如被0除,浮點溢位,等等
sigfreeze
solaris專用,hiberate或者suspended時候傳送
sighup
傳送給具有terminal的controlling process,當terminal被disconnect時候傳送
sigill
非法指令異常
siginfo
bsd signal。由status key產生,通常是ctrl+t。傳送給所有foreground group的程序
sigint
由interrupt key產生,通常是ctrl+c或者delete。傳送給所有foreground group的程序
sigio
非同步io事件
sigiot
實現相關的硬體異常,一般對應sigabrt
sigkill
無法處理和忽略。中止某個程序
siglwp
由solaris thread libray內部使用
sigpipe
在reader中止之後寫pipe的時候傳送
sigpoll
當某個事件傳送給pollable device的時候傳送
sigprof
setitimer指定的profiling interval timer所產生
sigpwr
和系統相關。和ups相關。
sigquit
輸入quit key的時候(ctrl+\)傳送給所有foreground group的程序
sigse**
非法記憶體訪問
sigstkflt
linux專用,數學協處理器的棧異常
sigstop
中止程序。無法處理和忽略。
sigsys
非法系統呼叫
sigterm
請求中止程序,kill命令預設傳送
sigthaw
solaris專用,從suspend恢復時候傳送
sigtrap
實現相關的硬體異常。一般是除錯異常
sigtstp
suspend key,一般是ctrl+z。傳送給所有foreground group的程序
sigttin
當background group的程序嘗試讀取terminal的時候傳送
sigttou
當background group的程序嘗試寫terminal的時候傳送
sigurg
當out-of-band data接收的時候可能傳送
sigusr1
使用者自定義signal 1
sigusr2
使用者自定義signal 2
si**talrm
setitimer函式設定的virtual interval timer超時的時候
sigwaiting
solaris thread library內部實現專用
sigwinch
當terminal的視窗大小改變的時候,傳送給foreground group的所有程序
sigxcpu
當cpu時間限制超時的時候
sigxfsz
程序超過檔案大小限制
sigxres
solaris專用,程序超過資源限制的時候傳送
Linux系統中的訊號
訊號 signal 是linux系統中用於程序之間相互通訊或操作的一種機制。訊號是乙個相當廣泛的課題 在這裡,我們僅僅 幾種最重要的訊號以及利用訊號控制程序的技術。訊號是乙個傳送到程序的特殊資訊。訊號機制是非同步的 當乙個程序接收到乙個訊號時,它會立刻處理這個訊號,而不會等待當前函式甚至當前一行 結...
Linux系統 訊號
訊號的基本概念 為了理解訊號,先從我們最熟悉的場景說起。使用者輸入命令,在shell下啟動乙個前台程序。使用者按下ctrl c,這個鍵盤輸入產生乙個硬體中斷。如果cpu當前正在執行這個程序的 則該程序的使用者空間 暫停執行,cpu從使用者態切換到核心態處理硬體中斷。中斷驅動程式將ctrl c解釋成乙...
linux中的訊號
1.什麼是訊號 1.1 訊號是內容受限的一種非同步通訊機制 1 訊號的目的 用來通訊 2 訊號是非同步的 對比硬體中斷 3 訊號本質上是int型數字編號 事先定義好的 1.2 訊號由誰發出 1 使用者在終端按下按鍵 2 硬體異常後由作業系統核心發出訊號 3 使用者使用kill命令向其他程序發出訊號 ...