C語言標準庫概覽詳述[6]-信號

頭文件<signal.h>中提供了一些用於處理程序運行期間所引發的異常條件的功能,如處理來源於外部的中斷信號或程序執行期間出現的錯誤等事件。

6.1 signal

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

signal()用於確定以後當信號sig出現時的處理方法。如果handler的值是SIG_DFL,那麼就採用實現定義的缺省行爲;如果handler的值是SIG_IGN,那麼就忽略該信號;否則,調用handler所指向的函數(參數爲信號類型)。有效的信號包括:

SIGABRT 異常終止,如調用abort()。
SIGFPE 算術運算出錯,如除數爲0或溢出。
SIGILL 非法函數映象,如非法指令。
SIGINT 交互式信號,如中斷。
SIGSEGV 非法訪問存儲器,如訪問不存在的內存單元。
SIGTERM 發送給本程序的終止請求信號。

signal()返回信號sig原來的的handler;如果出錯,則返回SIG_ERR。

當隨後出現信號sig時,就中斷正在執行的操作,轉而執行信號處理函數(*handler)(sig)。如果從信號處理程序中返回,則從中斷的位置繼續執行。

信號的初始狀態由實現定義。

6.2 raise

int raise(int sig);

向程序發送信號sig。如果發送不成功,就返回一個非0值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章