如何在bash腳本中執行命令時用戶停止腳本(使用ctrl -c)?當bash腳本停止時運行命令
目前,我有這個:
afplay file.mp3
while true:
do osascript -e "set volume 10"
end
,但我想,當用戶用它完成它來執行killall afplay
,不論它是命令C或其他按鍵。
如何在bash腳本中執行命令時用戶停止腳本(使用ctrl -c)?當bash腳本停止時運行命令
目前,我有這個:
afplay file.mp3
while true:
do osascript -e "set volume 10"
end
,但我想,當用戶用它完成它來執行killall afplay
,不論它是命令C或其他按鍵。
trap 'killall afplay' EXIT
使用trap
。
trap "kill $pid" INT TERM EXIT
也避免killall
或pkill
,因爲它可以殺死不相關的進程(例如,從您的腳本,甚至是不同的腳本的另一個實例)。相反,將播放器的PID放在一個變量中,只殺掉那個PID。
你需要把一個trap
聲明在你的bash腳本:
trap 'killall afplay' EXIT
不過請注意,這是行不通的,如果在bash進程發送KILL
信號(9),因爲它是不可能的進程截取該信號。
對於抓取進程的PID有什麼建議嗎? (如果這個過程是從本地開始的,我想它是直接的) – isaaclw 2012-04-18 16:53:32