linux信号捕捉
信號捕捉,防止進(jìn)程意外死亡
man signal
參數(shù)介紹;
signum 要捕捉的信號
handler 要執(zhí)行的捕捉函數(shù)指針,函數(shù)聲明 void func(int)
man sigaction
參數(shù)介紹:
signum 要捕捉的信號
act 傳入的動作
struct sigaction {void (*sa_handler)(int);//函數(shù)指針void (*sa_sigaction)(int, siginfo_t *, void *);sigset_t sa_mask;//執(zhí)行捕捉函數(shù)期間,臨時屏蔽的信號集int sa_flags; //一般用0(對應(yīng)使用第一個函數(shù)指針),SA_SIGINFO會使用第二個函數(shù)指針void (*sa_restorer)(void); //無效參數(shù) };oldact 傳出參數(shù),原有的動作
代碼示例:
使用 sigaction 捕捉setitimer發(fā)出的 14號信號:
信號捕捉的特性
‘’’
1.進(jìn)程正常運(yùn)行時,默認(rèn)PCB中有一個信號屏蔽字,假定為☆,它決定了進(jìn)程自動屏蔽哪些信號。當(dāng)注冊了某個信號捕捉函數(shù),捕捉到該信號以后,要調(diào)用該函數(shù)。而該函數(shù)有可能執(zhí)行很長時間,在這期間所屏蔽的信號不由☆來指定。而是用sa_mask來指定。調(diào)用完信號處理函數(shù),再恢復(fù)為☆。
2.XXX信號捕捉函數(shù)執(zhí)行期間,XXX信號自動被屏蔽。
3.阻塞的常規(guī)信號不支持排隊,產(chǎn)生多次只記錄一次。(后32個實時信號支持排隊)
‘’’
內(nèi)核實現(xiàn)信號捕捉過程
總結(jié)
- 上一篇: 成都大熊猫繁育基地学生证严不
- 下一篇: linux 线程学习初步01