0
我有一個運行程序的C shell腳本。該計劃會產生一個孩子。當我通過ctrl-C發送一個SIGINT到我的shell腳本時,shell腳本退出以及它產生的進程我想。然而,最後的過程依然存在。我如何指示C shell在它退出之前終止所有子進程?如何從shell腳本中退出時終止所有子進程?
我有一個運行程序的C shell腳本。該計劃會產生一個孩子。當我通過ctrl-C發送一個SIGINT到我的shell腳本時,shell腳本退出以及它產生的進程我想。然而,最後的過程依然存在。我如何指示C shell在它退出之前終止所有子進程?如何從shell腳本中退出時終止所有子進程?
如何爲SIGINT創建信號陷阱? See the Interrupt Handling section here:
#!/bin/csh
# Setup sigint handler
onintr close
# start a background process
sleep 1000&
setenv pid $!
while (1 == 1)
echo Program is running
sleep 2
end
close:
echo End of program. Kill $pid
kill $pid
你爲什麼要在C shell中編寫腳本?這是腳本編寫的最糟糕的外殼。 http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ – Barmar
是的,我知道這是一個可怕的「語言」 – dromodel
我(仁慈)沒有安裝C shell多年特別是tcsh),但也許嘗試掛斷('stty hupcl')然後'kill -6 $$'? – bishop