每個訊號都有乙個名字。這些名字都以3個字元sig開頭。
不存在編號為0的訊號。
以下條件都可以產生訊號:
● 當使用者按下某些終端鍵時,引發終端產生的訊號。如sigint。
● 硬體異常產生訊號:除數為0、無效的記憶體引用等。
● 程序呼叫kill(2)函式可以將任意訊號傳送給另乙個程序或程序組。接收訊號程序和傳送訊號程序的所有者必須相同,或傳送訊號的使用者必須為超級使用者。
● 使用者可呼叫kill(1)命令將訊號傳送給其他程序。
● 當檢測到某種軟體條件已經發生,並應將其通知有關程序時也產生訊號。如sigpipe、sigurg以及sigalrm。
訊號是非同步事件。
某個訊號出現時,可以告訴核心按一下3種方式之一進行處理,稱之為訊號的處理或者訊號相關的動作。
(1)忽略此訊號。
(2)捕捉訊號。
(3)執行系統預設動作。
unix系統訊號
unix 環境高階程式設計之訊號一 概念
為了理解訊號,先從最熟悉的場景說起 1 使用者輸入命令,在shell中啟動乙個前台程序。2 使用者按下ctrl c,這個鍵盤輸入產生乙個硬體中斷 3 如果cpu當前正在執行這個程序的 則該程序的使用者空間 暫時停止執行,cpu從使用者態切換到核心態處理硬體中斷 4 終端驅動程式將ctrl c解釋為乙...
unix環境高階程式設計 訊號(2)
函式kill和raise kill函式將訊號傳送給程序或程序組,raise函式則執行程序向自身傳送訊號。kill的pid引數有以下四種不同情況 pid 0,將該訊號傳送給程序id為pid的程序 pid 0,將該訊號傳送給與傳送程序屬於同一程序組的所有程序。pid 0 將該訊號傳送給程序組id等於pi...
Unix環境高階程式設計 九 訊號
訊號時軟中斷,很多比較重要的應用程式都需要處理訊號,訊號提供了一種處理非同步事件的方法。每個訊號都乙個名字,以sig開頭,在標頭檔案中定義訊號型別,都是正整數 訊號編號 產生訊號的條件 1 當使用者按某些終端鍵時,引發終端產生的訊號。2 硬體異常產生訊號。3 程序呼叫kill函式將訊號傳送給另外乙個...