linux訊號共性 特質 產生訊號的方式以及概念

2021-10-25 10:19:39 字數 610 閱讀 9833

​ 簡單、不能攜帶大量資訊、滿足條件才傳送。

​ 訊號是軟體層面上的「中斷」。一旦訊號產生,無論程式執行到什麼位置,必須立即停止執行,處理訊號,處理結束,再繼續執行後續指令。

每個程序收到的所有訊號,都是由核心負責傳送的,核心處理。

產生訊號:

1. 按鍵產生,如:ctrl+c、ctrl+z、ctrl+\

2. 系統呼叫產生,如:kill、raise、abort

3. 軟體條件產生,如:定時器 alarm

4. 硬體異常產生,如:非法訪問記憶體(段錯誤)、除0(浮點數例外)、記憶體對齊出錯(匯流排錯誤)

5. 命令產生,如:kill 命令

概念:

未決:產生與遞達之間狀態。

​ 遞達:產生並且送達到程序。直接被核心處理掉。

​ 訊號處理方式: 執行預設處理動作、忽略(丟棄)、捕捉(自定義)

​ 阻塞訊號集(訊號遮蔽字): 本質:位圖。用來記錄訊號的遮蔽狀態。一旦被遮蔽的訊號,在解除遮蔽前,一直處於未決態(被阻塞,不能遞達,一直處於未決)

​ 未決訊號集:本質:位圖。用來記錄訊號的處理狀態。該訊號集中的訊號,表示,已經產生,但尚未被處理。

linux之訊號產生

使用者在終端按下某些鍵時,終端驅動程式會傳送訊號給前台程序,例如ctrl c產生sigint信 號,ctrl 產生sigquit訊號,ctrl z產生sigtstp訊號。sigint的預設處理動作是終止程序,sigquit的預設處理動作是終止程序並且core dump,首先解釋什麼是core dum...

Linux 多執行緒應用 訊號產生,訊號處理

筆者有一種應用場景,a 執行緒從 socket 接收指令,根據指令在 b 執行緒進行相應工作。採用訊號機制,設定 sigusr1 的訊號處理函式 sighandler,a 執行緒解析指令後發射訊號 sigusr1,b 執行緒執行sighandler.因對 posix 訊號機制不熟,過程中產生了一些誤...

核心產生訊號

之前只知道核心往使用者空間傳送訊號可以用 非同步通知 昨天接觸到乙個新的函式,查了一下ulk3 page431 發現核心中有一族函式專門為程序產生訊號的。由於自己之前沒用過,最近又在看別的東西,先羅列在這 intsend sig int sig,struct task struct p,int pr...