2016-09-15 159 views
2

我對過程終止有一些疑問。我的使用情況是這樣的,當Java進程被終止時,java調用的shell腳本是否會被終止?

  1. Java的過程中,通過進程生成
  2. shell腳本調用一個新的進程X

是否process.destroy()在Java中也殺調用一個shell腳本程序與shell腳本一起處理x?

當x進程中Java進程被終止時會發生什麼? shell腳本進程和進程x都被殺死了嗎?

回答

3

子進程與父進程之間沒有聯繫。

兩個進程都可以知道對方的id,但是它們之間沒有硬連接。

通常,一個進程的子進程在被殺死時會受到平臺的依賴,所以不保證當你殺死一個由java創建的進程時,該進程的子進程也會被殺死。另外你的程序可以在不同的操作系統上有不同的行爲。

+0

因此,可能只有Java進程被殺死,但腳本在很少情況下(基於操作系統)...是這樣嗎? – lsof

+0

是的,這取決於操作系統如何處理殺死進程。 –

+0

那麼我們怎麼能殺死像Java這樣的其他進程調用的進程(如shell腳本)。 – lsof

相關問題