我使用Java運行時來運行命令,包括某些CVS命令。
我用:
java進程停止整個進程樹
process = runtime.exec ("cmd /C cvs...");
格式在Java
運行過程我需要停止它的選項。爲此,我使用的Java進程銷燬方法
process.destroy();
但是隻有CMD停止沒有cvs的過程。它作爲一個單獨的進程繼續運行,沒有父進程的cmd進程。
在互聯網上有很多這方面的參考,但我還沒有找到任何令人滿意的解決方案。謝謝
我使用Java運行時來運行命令,包括某些CVS命令。
我用:
java進程停止整個進程樹
process = runtime.exec ("cmd /C cvs...");
格式在Java
運行過程我需要停止它的選項。爲此,我使用的Java進程銷燬方法
process.destroy();
但是隻有CMD停止沒有cvs的過程。它作爲一個單獨的進程繼續運行,沒有父進程的cmd進程。
在互聯網上有很多這方面的參考,但我還沒有找到任何令人滿意的解決方案。謝謝
這是windows cmd
shell的問題。你爲什麼使用它?你不能做exec("cvs ...")
嗎?
沒問題。任何你必須使用cmd/C的理由? – 2010-03-18 16:55:36
感謝您的回覆。 我使用cmd/C,否則我將無法從Java運行Windows命令(如dir等)。然而你說什麼,我嘗試了CVS,它確實工作正常!所以這確實解決了我的問題的一部分。 但我確實嘗試了另一個程序gmake.exe,它在運行時產生其他進程,當我使用destroy時,它產生的子進程不停止。所以停止進程樹的問題仍然存在。 – ages04 2010-03-18 19:31:24
可能使用Runtime.exec來獲取您已經運行的進程的PID。這樣你可以關閉進程樹。
然而,您需要2個其他程序來查找PID並終止進程樹。
也許你可以嘗試使用cvs命令而不是java方法來停止進程。我的意思是啓動過程:runtime.exec(「cmd/C cvs start」);停止進程runtime.exec(「cmd/C cvs stop」); – Enrique 2010-03-18 18:06:11