訊號是軟體中斷,它是在軟體層次上對中斷機制的一種模擬。
訊號可以導致乙個正在執行的程序被另乙個正在執行的非同步程序中斷,轉而處理某乙個突發事件。訊號是一種非同步通訊方式。
程序不必等待訊號的到達,程序也不知道訊號什麼時候到達。
訊號可以直接進行使用者程序和核心空間程序的互動,核心程序可以利用它來通知使用者空間程序發生了哪些系統事件。
每個訊號的名字都以字元sig開頭。
每個訊號和乙個數字編碼相對應,在標頭檔案signum.h中 ,這些訊號都被定義為正整數。
訊號名定義路徑:
在linux下,要想檢視這些訊號和編碼的對應關係,可使用命令:kill -l
1.當使用者按某些終端鍵時,將產生訊號
例如:
終端上按「ctrl+c」 組合鍵通常產生中斷訊號sigint、
終端上按「ctrl+\」 鍵通常產生中斷訊號sigquit、
終端上按「ctrl+z」鍵通常產生中斷訊號sigtop。
2.硬體異常將產生訊號
除數為0,無效的記憶體訪問等。
3.軟體異常將產生訊號
當檢測到某種軟體條件已發生,並將其通知有關程序時,產生訊號。
4.呼叫kill函式將傳送訊號
注意:接收訊號程序和傳送訊號程序的所有者必須相同,或傳送訊號程序的所有者必須是超級使用者。
5.執行kill命令將傳送訊號
此程式實際上是使用kill函式來傳送訊號。也常用此命令終止乙個失控的後台程序。
當程序中產生了乙個訊號,就會讓當前程序做出一定的反應,
預設處理程序的方式如下:
1、終止程序:當訊號產生時,當前程序就會立即結束
2、預設程序:當訊號產生時,當前程序不作任何處理
3、停止程序:當訊號產生時,使得當前程序停止
4、讓停止的程序恢復執行:當訊號產生後,停止的程序會恢復執行(後台程序)
**注意:**每乙個訊號只有乙個預設的處理方式
1、執行系統預設動作
對大多數訊號來說,系統預設動作是用來終止程序。
2、忽略此訊號
接受此訊號後沒有任何動作
3、執行自定義訊號處理函式
用使用者定義的訊號處理函式處理該訊號。
注意:sigkill和sigstop這兩個訊號只能以預設的處理方式執行,不能忽略也不能自定義訊號值
性質預設處理方式
sigkill
9當產生這個訊號後,當前程序會退出,不能被預設或捕捉
退出程序
sigstop
19當產生這個訊號後,當前程序會停止,不能被預設或捕捉
停止程序
sigint
2鍵盤輸入ctrl+c時產生的訊號
退出程序
sigquit
3鍵盤輸入ctrl+\時產生的訊號
退出程序
sigtstp
20鍵盤輸入ctrl+z時產生的訊號
停止程序
sigcont
18當產生當前訊號後,當前停止的程序會恢復執行
停止的程序恢復執行
sigalrm
14當呼叫alarm函式設定的時間到達時會產生當前訊號
退出程序
sigpipe
13當管道破裂是,會產生當前訊號
退出程序
sigabrt
6當呼叫abort函式時,會產生當前訊號
退出程序
sigchld
17當使用fork建立乙個子程序時,如果子程序狀態改變(退出),會產生當前訊號
預設sigusr1
10使用者自定義訊號,不會自動產生,只能使用kill函式或者命令給指定的程序傳送當前訊號
預設sigusr2
12使用者自定義訊號,不會自動產生,只能使用kill函式或者命令給指定的程序傳送當前訊號
預設
linux中的訊號1 訊號概述
以下內容源於朱有鵬 物聯網大講堂 課程的學習整理,1 訊號的目的 用來程序間通訊 ipc 程序和核心間的通訊 2 訊號是非同步的 類似於軟體中斷,對比硬體中斷,如按鍵,不知道什麼時候按下 3 訊號本質上是 int型 數字編號 每個編號有特定的含義 內容是十分有限的。1 使用者在終端按下按鍵 2 硬體...
訊號完整性概述
1.什麼是訊號完整性問題 2.訊號完整性問題的根源 3.設計方法流程 4.si設計的難點 5.si設計誤區 6.關於經驗法則 3w原則 線中心距不少於3倍線寬,減少訊號間串擾 20h原則 電源層相對於地層內縮20h,抑制邊緣輻射效應 五五規則 時鐘頻率到5mhz,則pcb板須採用多層板 訊號時鐘走內...
訊號完整性概述
在高速數字設計領域,訊號完整性 si,signal integrity 概念已經被提出來很多年了。而對可程式設計邏輯器件的設計工程師來說,往往對這個概念沒有引起足夠的重視。有的人甚至認為,做數字邏輯電路的設計跟這些知識沒有什麼直接關係,那就非常危險了。任何危險,只要注意他,就可以設法避免他。但事實上...