3

从 Windows 中销毁生成的 ant 进程不起作用。Unix 变体这工作正常,但在 Windows 上这不起作用。代码片段如下。虽然返回码是正确的 (1) 生成的进程继续执行直到完成。只是windows上的问题。有任何想法吗?

        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);
    }
4

2 回答 2

2

问题是它Process.destroy不会杀死进程孙子。自 2002 年以来,有一个bug为它打开。

无论如何,你为什么要生成一个新的提示cmd /c start来调用 Ant?如果这不是要求,只需调用ant.bat -f HelloWorld.xml.

更新

ant.bat will还产生子进程。有一个taskkill 的解决方法可能会有所帮助。

于 2012-07-18T21:16:14.800 回答
0

通过混合使用 wmic(获取 Windows 进程列表)和 taskkill(强制终止正在运行的进程)来解决问题。

于 2012-07-20T18:53:37.533 回答