1. 程式人生 > >Linux系統程式設計—訊號捕捉

Linux系統程式設計—訊號捕捉

前面我們學習了訊號產生的幾種方式,而對於訊號的處理有如下幾種方式: 1. 預設處理方式; 2. 忽略; 3. 捕捉。 訊號的捕捉,說白了就是抓到一個訊號後,執行我們指定的函式,或者執行我們指定的動作。下面詳細介紹兩個訊號捕捉操作引數:**signal**和**sigaction**。 ##**signal函式** **函式原型:** sighandler_t signal(int signum, sighandler_t handler); 其中,sighandler定義是這樣的:typedef void (*sighandler_t)(int); **函式作用:** 註冊一個訊號捕捉函式,也就是說,收到了某個訊號,就執行它所註冊的回撥函式。 **函式引數:** signum:訊號編號,儘量用巨集來寫,而別用數字,這樣更適合跨平臺; handler:註冊的回撥函式; **函式缺陷:** 由於歷史原因,該函式在不同版本的Unix和Linux系統中可能起到的效果不一樣,所以跨平臺性不佳,儘量避免使用它,取而代之使用通用性更好的sigaction函式。 ``` #