linux中的訊號處理(signal與alarm)

2021-04-29 23:08:51 字數 908 閱讀 5908

簡單處理程式:

函式介紹:

alarm(設定訊號傳送鬧鐘)

相關函式

signal,sleep

表頭檔案

#include

定義函式

unsigned int alarm(unsigned int seconds);

函式說明

alarm()用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds 為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。

返回值

返回之前鬧鐘的剩餘秒數,如果之前未設鬧鐘則返回0。

signal(設定訊號處理方式)

相關函式

sigaction,kill,raise

表頭檔案

#include

定義函式

void (*signal(int signum,void(* handler)(int)))(int);

函式說明

signal()會依引數signum 指定的訊號編號來設定該訊號的處理函式。當指定的訊號到達時就會跳轉到引數handler指定的函式執行。如果引數handler不是函式指標,則必須是下列兩個常數之一:

sig_ign 忽略引數signum指定的訊號。

sig_dfl 將引數signum 指定的訊號重設為核心預設的訊號處理方式。

關於訊號的編號和說明,請參考附錄d

返回值

返回先前的訊號處理函式指標,如果有錯誤則返回sig_err(-1)。

附加說明

在訊號發生跳轉到自定的handler處理函式執行後,系統會自動將此處理函式換回原來系統預設的處理方式,如果要改變此操作請改用sigaction()。

範例

參考alarm()或raise()。

Linux中的訊號處理

突然想起使用sigaction註冊訊號處理函式時,訊號處理函式型別有二個 struct sigaction 通過對上面的sa flags賦值為sa siginfo,讓系統使用多引數的訊號處理函式。在處理函式中,由於傳進來乙個siginfo t的引數,我們可以通過它獲取到哪個程序傳進來的訊息。今天試了...

Linux的訊號處理

linux為實現訊號處理提供了比較多的介面,看似紛雜,但理清訊號的關係後還是很有條理的。主要分為以下四組,怎麼傳送乙個訊號,收到乙個訊號後做什麼樣的處理,主動等待乙個訊號的發生,對特定訊號只記錄是否發生供以後再處理 四組的api如下 不考慮多執行緒 傳送訊號 kill,alarm,arise 安裝訊...

Linux 訊號處理

用sigcation函式 在標頭檔案signal.h中 來設定自己的訊號處理函式,用法參見 各種訊號參見 寫了個sigint,也就是c c鍵的處理例子 include includestruct sigaction newsigint,oldsigint void signalinthandler ...