signal函式 自定義訊號處理方式

2021-09-30 17:24:13 字數 690 閱讀 6884

訊號(signal)是一種通知程序已經發生某種事件的機制。例如,在終端輸入ctrl+c中斷正在執行的程序,則就會觸發sigint的訊號傳送給該程序。程序如何處理訊號有三種選擇。

2)按系統預設處理方式。

3)提供乙個函式,訊號發生時呼叫這個函式,成為捕捉該訊號。以實現按使用者自定義的方式來處理訊號。

sigint訊號是針對於中斷鍵(ctrl + c)執行的訊號,當程式正在執行,然後鍵入中斷鍵,則執行此程式的程序就會終止。產生這種結果的原因是,對於此訊號(sigint) 的系統預設動作是終止程序。該程序沒有告訴系統核心對此訊號作何種處理,所以系統按預設方式終止該程序。

通過呼叫signal函式可以使得程式能夠捕捉到此訊號,指定發生sigint訊號時要呼叫的函式名即可,函式由使用者自己定義。

#includevoid (*signal(int signo, void (*func)(int)))(int); //返回以前的訊號處理配置
static int temp = 0;

void fun()

else //第一次捕捉到sigint訊號,列印"hello world" }

int main()

return 0;

}

Linux 訊號signal處理函式

alarm 設定訊號傳送鬧鐘 相關函式 signal,sleep 表頭檔案 include 定義函式 unsigned int alarm unsigned int seconds 函式說明 alarm 用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seco...

Signal訊號處理

在goahead的linux模組main.c 檔案中,main函式中出現了以下三個語句 signal sigpipe,sig ign signal sigint,siginthandler signal sigterm,siginthandler 這三條語句與網路訊號有關。在這裡做咯記錄。1.訊號概...

C C Qt 訊號自定義槽函式

qt中實現自定義訊號與槽函式,訊號用於傳送並觸發槽函式,槽函式則是具體的功能實現,如下我們以老師學生為例子簡單學習一下訊號與槽函式的使用方法。使用無引數訊號與槽 首先定義乙個teacher類,該類中用於傳送乙個訊號,其次student類,定義用於接收該訊號的槽函式,最後在widget中使用emit觸...