訊號是事件發生時對程序的通知機制,也被稱為軟中斷。大多數情況下,無法**訊號到達的精確時間。
乙個(具有合適許可權的)程序能夠向另一程序傳送訊號。程序也可以向自身傳送訊號。然而,發往程序的諸多訊號,通常有源於核心。引發核心為程序產生訊號的各類事件如下。
訊號產生後,會於稍後被傳遞給某一程序,而程序也會採取某些措施來響應訊號。在產生和到達期間,訊號處於等待(pending)狀態。
通常,一旦核心接下來要排程該程序執行,等待訊號會馬上送達;如果程序正在執行,則會立即傳遞訊號。
然而,有時需要確保一段**不被傳遞來的訊號所中斷,可以將訊號新增到程序的訊號掩碼中。如果所產生的訊號屬於阻塞之列,那麼訊號將保持等待狀態,直至稍後對其解除阻塞(從訊號掩碼中移除)。
訊號到達後,可執行如下預設操作之一。
也可以對訊號做處理:
注意,無法將訊號處置設定為終止程序或者轉儲核心(除非這是對訊號的預設處置)。效果最接近的是呼叫exit()或者abort()。abort()函式為程序產生乙個sigabrt訊號,該訊號將引發程序轉儲核心檔案並終止。
linux可以檢視/proc/pid/status來看訊號的處理:
sigq: 1/62839
sigpnd: 0000000000000000 \\基於執行緒的等待訊號
shdpnd: 0000000000010000 \\程序級等待訊號
sigblk: 0000000000010000 \\阻塞訊號
sigign: 0000000000000006 \\忽略訊號
sigcgt: 0000000000000000 \\捕獲訊號
linux學習筆記之訊號
訊號機制是程序之間想回傳遞訊息的一種方法,應用於非同步事件的處理,訊號全稱為軟中斷訊號,它被傳送給乙個正在被執行的程序以通知該程序有某一件事發生。發出訊號的原因有很多 1.與程序終止有關的訊號。當程序退出或子程序終止時,會發出這類訊號 2.與程序列外事件相關的訊號。如程序越界,或企圖寫乙個唯讀的記憶...
LINUX學習筆記13 程序間通訊2訊號
a 產生 按鍵,硬體異常,kill函式傳送訊號 b 常見訊號 1.sighup 結束訊號 2.sigint 中斷訊號ctrl c 3.sigkill 結束接收訊號的程序 4.sigterm kill命令發出的訊號 5.sigchld 標誌子程序停止或結束的訊號 6.sigstop 停止訊號 c 訊號...
QT學習筆記(2) 訊號與槽
1 moc 元物件 系統簡介 在 qt 助手的索引裡面輸入 the meta object system 就可以看到元物件系統的英文文件。現在將其主要的內容描述如下 qt 元物件系統實現了物件之間通訊機制 訊號和槽,並提供了執行時型別資訊和動態屬性系統。元物件系統是 qt 類庫獨有的功能,是 qt ...