2016-11-23 94 views
0

我正在使用並行處理,而不是處理cvars和鎖我發現在shell腳本中依次運行一些命令以避免競爭條件在一個地方更容易。新問題是這些命令中的一個調用另一個程序,操作系統決定將這個程序放入一個新進程。我需要從父程序中殺死這個進程,但是父程序只知道父進程的pid(shell腳本),所以這個進程會自動執行。當父母離開時叉子子進程會死? (bash)

有沒有辦法在bash中設置一個子進程死亡,當父母死亡?我試圖弄清楚如何將它作爲一個守護進程來執行,因爲我在守護進程中讀取守護進程時退出,但這很棘手,我不能完全正確地執行它。謝謝!

+0

你的意思是說當開始的父腳本退出時要殺死所有的後臺進程嗎? – Inian

+0

是的!我怎樣才能做到這一點?謝謝。 – AndyW

+0

我想你會在父進程退出時需要'trap'命令,但我不知道如何使用它。 – Inian

回答

0

發現問題,並解決了這個問題(除了一些煩人的消息,不知何故無法重定向到/ dev/null)。

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT 
+0

在你遇到的問題上增加一點背景知識,並解釋這個命令如何解決它! – Inian

相關問題