2010-03-18 62 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并终止进程树。