shell trap訊號處理

2021-06-19 15:53:02 字數 668 閱讀 2863

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.被阻塞的訊號產生時將保持在未決狀態,知道程序解除對此訊號 的阻塞,才會執行遞...

訊號 訊號處理函式(捕捉)

要明白訊號處理函式的使用,就要先知道訊號的捕捉設定,什麼時候會呼叫訊號處理函式和其執行的流程是什麼,下圖完整的展示了訊號捕捉的設定,以及訊號處理函式的觸發機制 所以,從上圖可以知道,只有當程式中斷,異常或系統呼叫,才會進入核心態,也只有進入了核心態才能處理訊號,在這裡初學者常常有乙個誤區,他們會覺得...