當引發訊號的事件發生時,為程序產生乙個訊號(或向程序傳送乙個訊號)。事件可以是硬體異常、軟體條件、終端產生的訊號或呼叫kill函式。
在產生了訊號時,核心通常在程序表中設定乙個某種形式的標誌。當對訊號採取了這種動作時,我們說向程序遞送了乙個訊號。
在訊號產生(generation)和遞送(delivery)之間的時間間隔,稱訊號是未決的(pending)。
程序可以選用訊號遞送阻塞。如果為程序產生了乙個選擇為阻塞的訊號,而且對該訊號的動作是系統預設動作或捕捉該訊號,則為該程序將此訊號保持為未決狀態,直到該程序(a)對此訊號解除了阻塞,或者(b)將對此訊號的動作更改為忽略。核心在遞送乙個原來被阻塞(現在解除了阻塞)的訊號給程序時(而不是在產生該訊號時),才決定對它的處理方式。於是程序在訊號遞送給它之前仍可改變對該訊號的動作。程序呼叫sigpending函式來判定哪些訊號是設定為阻塞並處於未決狀態的。
每個程序都有乙個
訊號遮蔽字(signal mask),它規定了當前要阻塞遞送到該程序的訊號集。對於每種可能的訊號,該遮蔽字中都有一位與之對應。對於某種訊號,若其對應位已設定,則它當前是被阻塞的。程序可以呼叫sigprocmask來檢測和更改其當前訊號遮蔽字。
訊號數量可能會超過整型所包含的二進位制位數,因此posix.1定義了乙個新資料型別sigset_t,用於儲存乙個訊號集。
本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:。
訊號及訊號處理(二) 可靠訊號與不可靠訊號
一 可靠訊號與不可靠訊號有哪些?sighup 1號 至 sigsys 31號 之間的訊號都是繼承自unix系統,是不可靠訊號,也稱為非實時訊號 sigrtmin 33號 與 sigrtmax 64號 之間的訊號,它們都是可靠訊號,也稱為實時訊號 二 什麼是可靠訊號?可靠性是指訊號是否會丟失,即該訊號...
原始碼 訊號可靠訊號不可靠訊號相關
file main.c author luv letter created on 2017年3月14日,下午4 33 include include include include 3 訊號可靠訊號不可靠訊號相關 程式設計程式,要去實現如下功能 父程序建立子程序1和子程序2 子程序1向子程序2傳送可...
24 可靠訊號與不可靠訊號
以下整理 自 1 1 可靠訊號與不可靠訊號 1 訊號值小於 sigrtmin red hat 7.2 中,sigrtmin 32 sigrtmax 63 的訊號都是不可靠訊號。主要問題如下 程序每次處理訊號後,就將對訊號的響應設定為預設動作。在某些情況下,將導致對訊號的錯誤處理 因此,使用者如果不希...