我有一個運行一些其他程序的Java程序。一旦用戶完成他們有一個按鈕來殺死所有進程,這應該殺死所有正在運行的,但它應該通過強制它們來執行。這些其他進程中至少有一個也是用Java編寫的,並且有多個關閉鉤子,因爲它會在退出時自動保存首選項文件並殺死它自己啓動的進程,例如。如何在不強制Java的情況下終止Java進程?
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
if (process != null)
process.destroy();
}
}
當主進程調用銷燬上述代碼不在子進程上運行。無論如何,我可以終止進程,所以這仍然會運行?我從Perl移植它會殺死(9,@ kill_process);
謝謝。
從關於destroy的文檔:*「殺死子進程,由這個Process對象表示的子進程被強制終止。」* – Tim
我知道這是問題所在,我不希望它們被強行終止。 –
然後,您需要執行一些IPC,以便子進程將優雅地終止。 –