Linux訊號(一) 訊號的基本概念

2021-08-03 14:31:50 字數 781 閱讀 5218

訊號是軟體中斷,很多比較重要的應用程式都需要處理訊號。訊號是一種程序之間或者核心與程序間非同步通訊的一種機制,例如:使用者在終端鍵入中斷鍵,會通過訊號機制停止乙個程式。每個訊號都有乙個名字(以sig開頭),例如,sigabrt是夭折訊號,當程序呼叫abort函式是產生這種訊號;sigalrm是鬧鐘訊號,有alarm函式設定的定時器超時後將產生這種訊號。在標頭檔案signal.h中,訊號名都被定義為正整數常量(訊號編號)。不存在編號為0的訊號,kill函式對訊號編號0有特殊的用途。

在終端,我們可以使用命令kill -l檢視所有的signal訊號。

訊號是非同步事件的經典例項,產生訊號的事件是隨機出現的,程序不能夠通過簡單地測試乙個變數來判斷是否發生乙個訊號,而是必須告訴核心「在此訊號發生時,請執行下列操作」。

在某訊號出現時,可以告訴核心按下列3種方式之一進行處理,我們稱之為訊號的處理或訊號的相關動作

下圖中列出了所有訊號的名字,說明了哪些系統支援此訊號以及這些訊號的系統預設動作。在「預設動作」列中,「終止+core」表示在程序當前工作目錄的core檔案中複製該程序的儲存映像。大多數unix除錯程式都使用core檔案以檢查程序終止時的狀態

關於這些訊號的詳細解釋大家可以看看《unix環境高階程式設計》 p252。

Linux訊號的基本概念

天天在用訊號,它的概念你可知道地準確?訊號機制是一種使用訊號來進行程序之間傳遞資訊 的方法,其中訊號的全稱為軟中斷訊號,簡稱軟中斷。訊號只是用 來通知程序發生了什麼事情,並不給程序傳遞資料。訊號都有乙個預設值,且有3種處理方式 退出,忽視,註冊函式。訊號的幾個缺點 1.系統開銷太大 2.傳送訊號的程...

linux訊號的基本概念

訊號 訊號 是乙個軟體中斷 通知程序發生了某件事情,中斷程序當前操作 讓程序去處理這件事。前提 必須識別這個訊號 訊號種類有很多。每個都代表不同事件。訊號是有生命週期 產生 註冊 登出 處理 阻塞 阻止訊號被處理 作業系統中定義的訊號種類 檢視訊號種類 kill l 總共62種,1 31非可靠訊號 ...

訊號基本概念

sighup 終止程序 終端線路結束通話 sigint 終止程序 中斷程序 sigquit 建立core檔案終止程序,並且生成core檔案 sigill 建立core檔案 非法指令 sigtrap 建立core檔案 跟蹤自陷 sigbus 建立core檔案 匯流排錯誤 sigsegv 建立core檔...