从窗口销毁产卵的ant进程不起作用。 Unix的变种这工作正常,但从Windows这不起作用。 代码片段如下。 虽然返回代码是正确的(1)产生的进程继续执行,直到完成。 只有一个窗口上的问题。 有任何想法吗?
ProcessBuilder build = new ProcessBuilder(); List<String> list = build.command(); list.add("cmd"); list.add("/C"); list.add("ant"); list.add("-f"); list.add("HelloWorld.xml"); try { Process p = build.start(); Thread.sleep(5000); p.destroy(); int i = p.waitFor(); System.out.println(i); } catch (Exception e) { System.out.println(e); }
问题是Process.destroy
不杀死进程孙子。 自2002年以来,有一个错误 。
无论如何,你为什么产生一个新的提示与cmd /c start
调用Ant? 如果这不是要求,只需调用ant.bat -f HelloWorld.xml
。
UPDATE
ant.bat will
产生子进程。 taskkill有一个解决方法可能会有所帮助。
问题通过使用混合wmic(获取窗口进程列表)和taskkill(强制终止正在运行的进程)来解决。