要對一個信號進行處理,就需要給出此信號發生時系統所調用的處理函數。可以對一個特定的信號(除去SIGKILL和SIGSTOP信號)注冊相應的處理函數。注冊某個信號的處理函數後,當進程接收到此信號時,無論進程處於何種狀態,就會停下當前的任務去執行此信號的處理函數。
1、注冊信號函數。
signumber表示信號處理函數對應的信號。func是一個函數指針。此函數有一整型參數,並返回void型。其實func還可以取其他定值如:SIG_IGN,SIG_DFL.
SIG_IGN表示:忽略signumber所指出的信號。SIG_DFL表示表示調用系統默認的處理函數。signal函數的返回值類型同參數func,是一個指向某個返回值為空並帶有一個整型參數的函數指針。其正確返回值應為上次該信號的處理函數。錯誤返回SIG_ERR
signal示例如下:
通常情況下一個用戶進程需要處理多個信號。可以在一個程序中注冊多個信號處理函數。一個信號可以對應一個處理函數,同時多個信號可以對應一個處理函數。
對於SIGINT信號 我們可以用ctrl+c或ctrl+z來中斷進程,來執行SIGINT注冊的函數。