訊號相關概念

2021-08-03 06:24:49 字數 1681 閱讀 3375

我記得我在程序間通訊的時候說到過一種方式——訊號量;終止在linux命令列上正在執行的可執行程式所用的ctrl+c,也屬於一種訊號(是常見sigint訊號),所以,今天我想具體分享一下與訊號相關的一些概念。

linux中訊號共有64個,常見訊號量只有31個,利用kill -l命令就可以用來檢視全部訊號,如下圖所示:

首先從訊號的處理的三種方式說起。

2>執行訊號的預設處理動作。

3>自定義一種對訊號的處理動作。

前兩種在linux系統中,在使用signal函式對乙個訊號進行捕捉時,signal函式的定義如下所示:

第乙個訊號為待捕捉的訊號編號,其中,第二個引數有三種選擇,sig_ign表示忽略訊號(在守護程序那篇部落格中有運用),sig_dfl表示執行該訊號的預設動作(就不演示),自定義處理動作可以填使用者自定義的函式名(在部落格子程序非同步等待方式中有運用)。

其次說說,訊號的產生來說吧!訊號的產生分為3種。

1>通過終端按鍵產生的訊號。例如:ctrl+c,ctrl+\等等。

2>呼叫系統函式向程序發訊號。例如:kill函式,raise函式,abort函式。

kill函式向任意程序發任意訊號如下示:

raise函式向程序發sigabrt訊號如下示:

abort函式向函式所在的程序發任意訊號如下示:

3>由軟體條件產生訊號。例如:alarm函式。

alarm函式發訊號如下示:

程式收到鬧鐘會結束程式

在前乙個alarm函式沒執行完時,重新設定alarm函式,該alarm函式返回上一alarm函式剩餘秒數。

最後,需要明確的一點是向程序傳送的訊號並不會第一時間抵達並被程序處理,所以訊號存在訊號未決和訊號抵達這兩種狀態。

下乙個部落格會具體說明訊號遮蔽以及如何實現訊號遮蔽。敬請期待!

ps:個人不喜歡文字太多和太長的技術性文章,所以我分成兩個部落格,內容銜接,時間也會接近,不會影響閱讀的。希望大家能喜歡,如有錯誤,請斧正!

linux 訊號相關概念

訊號的阻塞就是讓系統暫時保留訊號待以後傳送。由於另外有辦法讓系統忽略訊號,所以一般情況下訊號的阻塞只是暫時的,只是為了防止訊號打斷敏感的操作。當需要修改某些全域性變數時,可以通過sigprocmask 函式阻塞處理函式中也使用該變數的訊號。在某些訊號處理函式中,為了防止同類訊號的到來,可以使用sig...

訊號的概念

訊號 signal 程序之間通訊的方式,是一種軟體中斷。乙個程序一旦接收到訊號就會打斷原來的程式執行流程來處理訊號。幾個常用訊號 sigint 終止程序 中斷程序 control c sigterm 終止程序 軟體終止訊號 sigkill 終止程序 殺死程序 sigalrm 鬧鐘訊號 sigterm...

TTL RGB訊號相關

圖2 雙畫素 雙路 rgb資料傳送方式各訊號之間的定時關係。de訊號 有效資料選通訊號 de訊號與行場同步訊號之間的關係 de訊號與行場同步訊號之間的定時關係如圖2所示 以1024 768液晶面板為例 圖 a 所示為de與行同步訊號之間的定時關係 圖 b 所示為de與場同步訊號之間的定時關係。圖 b...