shell中trap可設定指令碼的訊號處理函式,格式如下:
trap signal_handler hup int quit tstp term exit
注:1、signal_handler 是訊號處理函式;
2、hup int quit tstp term exit 是相關訊號。
3、如果要重置某個訊號的處理條件到其預設值,只需簡單的將command設定為-。
4、如果要忽略某個訊號,就把command設定為空字串『』。乙個不帶引數的trap命令將列出當前設定的訊號及其行動的清單。
表 2-11
信 號
說 明
hup(1)
掛起,通常因終端掉線或使用者退出而引發
int(2)
中斷,通常因按下ctrl+c組合鍵而引發
quit(3)
退出,通常因按下ctrl+/組合鍵而引發
abrt(6)
中止,通常因某些嚴重的執行錯誤而引發
alrm(14)
報警,通常用來處理超時
term(15)
終止,通常在系統關機時傳送
另外在bash還有兩個偽訊號:
**:
exit shell從指令碼中退出後傳送該訊號
debug shell執行完一條語句後傳送該訊號
訊號處理,訊號佇列
最近幾天在看訊號,對實時訊號的實時性不是很理解,今天看了下 dequeue signal 差不多理解了,乙個實時訊號可以有多個實時佇列,在signal集合裡乙個signal可能有多個signal佇列。訊號,有訊號佇列,有訊號集 sigpending是訊號pending的結構體,裡面有sigqueue...
Linux程序訊號 訊號處理
一 訊號相關概念 1.實際執行訊號的處理動作稱為訊號遞達 delivery 2.訊號從產生到遞達之間的狀態稱為訊號未決 pending 不一定會立即delivery 3.程序可以選擇阻塞 block 某個訊號。不會遞達 4.被阻塞的訊號產生時將保持在未決狀態,知道程序解除對此訊號 的阻塞,才會執行遞...
訊號 訊號處理函式(捕捉)
要明白訊號處理函式的使用,就要先知道訊號的捕捉設定,什麼時候會呼叫訊號處理函式和其執行的流程是什麼,下圖完整的展示了訊號捕捉的設定,以及訊號處理函式的觸發機制 所以,從上圖可以知道,只有當程式中斷,異常或系統呼叫,才會進入核心態,也只有進入了核心態才能處理訊號,在這裡初學者常常有乙個誤區,他們會覺得...