概念
訊號是程序之間事件非同步通知的一種方式,屬於軟中斷。
訊號處理常見方式
忽略此訊號。
執行該訊號的預設處理動作。
提供乙個訊號處理函式,要求核心在處理該訊號時切換到使用者態執行這個處理函式,這種方式稱為捕捉 (catch)乙個訊號。
產生訊號
捕捉訊號
核心如何實現訊號的捕捉
如果訊號的處理動作是使用者自定義函式,在訊號遞達時就呼叫這個函式,這稱為捕捉訊號。訊號處理函式的**是在使用者空間的,處理過程比較複雜。
sigaction
#include int sigaction(int signo, const struct sigaction *act, struct sigaction *oact);
sigaction函式可以讀取和修改與指定訊號相關聯的處理動作。呼叫成功則返回0,出錯則返回- 1。signo 是指定訊號的編號。若act指標非空,則根據act修改該訊號的處理動作。若oact指標非 空,則通過oact傳出該訊號原來的處理動作。
act和oact指向sigaction結構體
訊號其他相關常見概念
Linux程序訊號
訊號是乙個軟體中斷。作業系統通過訊號告訴程序發生了某個事件,打斷程序當前的操作,去處理這個事件。1.訊號的檢視kill l 檢視系統中的訊號種類在linux作業系統中,一共有62中訊號。34 64號訊號 後期擴充的,因為沒有具體對應事件,因此命名比較草率 可靠訊號。訊號的生命週期 產生 在程序中註冊...
linux 程序訊號
signal 函式的使用方法簡單,但並不屬於 posix 標準,在各類 unix 平台上的實現不盡相同,因此其用途受 到了一定的限制。而 posix 標準定義的訊號處理介面是 sigaction 函式,其介面標頭檔案及原型如下 include int sigaction int signum,con...
Linux程序訊號 訊號處理
一 訊號相關概念 1.實際執行訊號的處理動作稱為訊號遞達 delivery 2.訊號從產生到遞達之間的狀態稱為訊號未決 pending 不一定會立即delivery 3.程序可以選擇阻塞 block 某個訊號。不會遞達 4.被阻塞的訊號產生時將保持在未決狀態,知道程序解除對此訊號 的阻塞,才會執行遞...