原文鏈接:linux中sigaction函數詳解
一、函數原型:sigaction函數的功能是檢查或修改與指定信號相關聯的處理動作(可同時兩種操作)
int sigaction(int signum, const struct sigaction *act,
struct sigaction *oldact);
signum參數指出要捕獲的信號類型,act參數指定新的信號處理方式,oldact參數輸出先前信號的處理方式(如果不爲NULL的話)。
二、 struct sigaction結構體介紹
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
}
sa_handler此參數和signal()的參數handler相同,代表新的信號處理函數
sa_mask 用來設置在處理該信號時暫時將
sa_mask 指定的信號集擱置
sa_flags 用來設置信號處理的其他相關操作,下列的數值可用。
SA_RESETHAND:當調用信號處理函數時,將信號的處理函數重置爲缺省值SIG_DFL
SA_RESTART:如果信號中斷了進程的某個系統調用,則系統自動啓動該系統調用
SA_NODEFER :一般情況下, 當信號處理函數運行時,內核將阻塞該給定信號。但是如果設置了 SA_NODEFER標記, 那麼在該信號處理函數運行時,內核將不會阻塞該信號