2010-03-18 82 views
2

我使用Java運行時來運行命令,包括某些CVS命令。
我用:
java進程停止整個進程樹

process = runtime.exec ("cmd /C cvs..."); 

格式在Java
運行過程我需要停止它的選項。爲此,我使用的Java進程銷燬方法

process.destroy(); 


但是隻有CMD停止沒有cvs的過程。它作爲一個單獨的進程繼續運行,沒有父進程的cm​​d進程。
在互聯網上有很多這方面的參考,但我還沒有找到任何令人滿意的解決方案。謝謝

+0

也許你可以嘗試使用cvs命令而不是java方法來停止進程。我的意思是啓動過程:runtime.exec(「cmd/C cvs start」);停止進程runtime.exec(「cmd/C cvs stop」); – Enrique 2010-03-18 18:06:11

回答

2

這是windows cmd shell的問題。你爲什麼使用它?你不能做exec("cvs ...")嗎?

+0

沒問題。任何你必須使用cmd/C的理由? – 2010-03-18 16:55:36

+0

感謝您的回覆。 我使用cmd/C,否則我將無法從Java運行Windows命令(如dir等)。然而你說什麼,我嘗試了CVS,它確實工作正常!所以這確實解決了我的問題的一部分。 但我確實嘗試了另一個程序gmake.exe,它在運行時產生其他進程,當我使用destroy時,它產生的子進程不停止。所以停止進程樹的問題仍然存在。 – ages04 2010-03-18 19:31:24

0

可能使用Runtime.exec來獲取您已經運行的進程的PID。這樣你可以關閉進程樹。

然而,您需要2個其他程序來查找PID並終止進程樹。