英文原文:
中文譯者:柳驚鴻 poechant
9. signal.h
標頭檔案signal處理程式執行時產生的訊號的方法。
巨集:sig_dfl
sig_err
sig_ign
sigabrt
sigfpe
sigill
sigint
sigsegv
sigterm
函式:
signal();
raise();
變數:typedef sig_atomic_t
9.1.變數和定義
型別sig_atomic_t就是int,作為signal函式的handler中的變數。sig_巨集用於signal函式中用於定義訊號函式。
sig_dfl
預設handler。
sig_err
表示錯誤訊號。
sig_ign
忽略訊號。
sig巨集代表下列情況下的訊號編號。
sigabrt
異常終止(由abort函式產生)。
sigfpe
浮點錯誤(由零除執行、不合理操作產生)。
sigill
非法操作(指令)。
sigint
互動訊號(比如我們熟悉的ctrl-c)。
sigsegv
非法儲存訪問(段錯誤,記憶體錯誤)。
sigterm
終止請求。
9.2. signal
宣告:void (*signal(intsig
, void (*func
)(int)))(int);
該函式管理乙個訊號應該如何被操控。sig
代表與sig巨集相容的訊號編號。func
函式會在訊號產生時被呼叫。如果函式是sig_dfl,則呼叫預設的handler。如果func
是sig_ign,則訊號被忽略。如果func
指向乙個函式,那麼當檢測到乙個訊號並執行預設handler時,該函式會被呼叫。函式必須攜帶乙個int引數代表訊號編號。函式可能被return,abort,exit,或者longjmp終止。當函式終止時,程式繼續從中斷處執行(除非是結果未定義的訊號sigfpe)。
如果訊號呼叫成功,則返回指向之前特定訊號型別的handler的指標。如果訊號呼叫失敗,則返回sig_err並且將errno設定乙個合理值。
9.3. raise
宣告:int raise(intsig
);
產生sig
訊號。sig
引數要與sig巨集相容。
如果呼叫成功,會返回0。否則返回非零值。
例項:
#include
#include
void catch_function(int);
int main(void)
printf("raising the interactive attention signal.\n");
if(raise(sigint)!=0)
printf("exiting.\n");
return 0;
}
void catch_function(int signal)
程式執行輸出結果(假設沒有錯誤):
raising the interactive attention signal.
interactive attention signal caught.
exiting.
該系列譯文在持續更新中⋯⋯ -
C標準庫參考指南系列譯文(9)signal h
英文原文 中文譯者 柳驚鴻 poechant 9.signal.h 標頭檔案signal處理程式執行時產生的訊號的方法。巨集 sig dfl sig err sig ign sigabrt sigfpe sigill sigint sigsegv sigterm 函式 signal raise 變數...
C標準庫參考指南系列譯文(1)assert h
英文原文 中文譯者 柳驚鴻 poechant 1.1 assert.h 斷言標頭檔案用於除錯。巨集 assert 外部引用 ndebug 1.1.assert 宣告 void assert intexpression 斷言標頭檔案中的巨集允許你將一些特殊資訊寫入到標準錯誤檔案。如果表示式的值為0 f...
C標準庫參考指南系列譯文(5)limits h
英文原文 中文譯者 柳驚鴻 poechant 5.limits.h 該標頭檔案定義了變數型別的特點。5.1.defined values 下面這些值由 define指令定義。這些值由實現所確定,但一般不會比下面給出的值小。char bit 8 單位元組的位數。schar min 127 有符號字元的...