原文出處:
一. trap捕捉到訊號之後,可以有三種反應方式:
(1)執行一段程式來處理這一訊號
(2)接受訊號的預設操作
(3)忽視這一訊號
二. trap對上面三種方式提供了三種基本形式:
第一種形式的trap命令在shell接收到signal list清單中數值相同的訊號時,將執行雙
引號中的命令串。
trap 'commands' signal-list
trap "commands" signal-list
為了恢復訊號的預設操作,使用第二種形式的trap命令:
trap signal-list
第三種形式的trap命令允許忽視訊號
trap " " signal-list
注意:(1) 對訊號11(段違例)不能捕捉,因為shell本身需要捕捉該訊號去進行記憶體的轉儲。
(2) 在trap中可以定義對訊號0的處理(實際上沒有這個訊號), shell程式在其終止(如
執行exit語句)時發出該訊號。
(3) 在捕捉到signal-list中指定的訊號並執行完相應的命令之後, 如果這些命令沒有
將shell程式終止的話,shell程式將繼續執行收到訊號時所執行的命令後面的命令,這樣將
很容易導致shell程式無法終止。
另外,在trap語句中,單引號和雙引號是不同的,當shell程式第一次碰到trap語句時,
將把commands中的命令掃瞄一遍。此時若commands是用單引號括起來的話,那麼shell不會
對commands中的變數和命令進行替換, 否則commands中的變數和命令將用當時具體的值來
替換。
1) sighup 2) sigint 3) sigquit 4) sigill
5) sigtrap 6) sigabrt 7) sigbus 8) sigfpe
9) sigkill 10) sigusr1 11) sigsegv 12) sigusr2
13) sigpipe 14) sigalrm 15) sigterm 17) sigchld
18) sigcont 19) sigstop 20) sigtstp 21) sigttin
22) sigttou 23) sigurg 24) sigxcpu 25) sigxfsz
26) sigvtalrm 27) sigprof 28) sigwinch 29) sigio
30) sigpwr 31) sigsys 33) sigrtmin 34) sigrtmin+1
35) sigrtmin+2 36) sigrtmin+3 37) sigrtmin+4 38) sigrtmin+5
39) sigrtmin+6 40) sigrtmin+7 41) sigrtmin+8 42) sigrtmin+9
43) sigrtmin+10 44) sigrtmin+11 45) sigrtmin+12 46) sigrtmin+13
47) sigrtmin+14 48) sigrtmin+15 49) sigrtmax-15 50) sigrtmax-14
51) sigrtmax-13 52) sigrtmax-12 53) sigrtmax-11 54) sigrtmax-10
55) sigrtmax-9 56) sigrtmax-8 57) sigrtmax-7 58) sigrtmax-6
59) sigrtmax-5 60) sigrtmax-4 61) sigrtmax-3 62) sigrtmax-2
63) sigrtmax-1 64) sigrtmax
在shell中捕捉訊號的trap命令
1 執行一段程式來處理這一訊號 2 接受訊號的預設操作 3 忽視這一訊號 二.trap對上面三種方式提供了三種基本形式 第一種形式的trap命令在shell接收到signal list清單中數值相同的訊號時,將執行雙 引號中的命令串。trap commands signal list trap co...
shell 使用命令trap來捕捉訊號
一.trap捕捉到訊號之後,可以有三種反應方式 1 執行一段程式來處理這一訊號 2 接受訊號的預設操作 3 忽視這一訊號 二.trap對上面三種方式提供了三種基本形式 第一種形式的trap命令在shell接收到signal list清單中數值相同的訊號時,將執行雙 引號中的命令串。trap comm...
在SHELL中捕捉訊號的TRAP命令
一.trap捕捉到訊號之後,可以有三種反應方式 1 執行一段程式來處理這一訊號 2 接受訊號的預設操作 3 忽視這一訊號 二.trap對上面三種方式提供了三種基本形式 第一種形式的trap命令在shell接收到signal list清單中數值相同的訊號時,將執行雙 引號中的命令串。trap comm...