如何知道以“cmd start”开头的进程的状态?

时间:2012-08-16 22:13:30

标签: java process

我正在尝试编写一个小工具,如果它们已被终止,则会重新启动一定数量的jar。

private static void checkAndRestartProcesses() {
    for ( int i=0; i<processes.size(); i++ ) {
        try {
            processes.get(i).exitValue();
            processes.remove(i);
        } catch (IllegalThreadStateException ex) {
        }
    }
    try {
        for ( int i=processes.size(); i<Config.NR_PROCESSES; i++ ) {
            ProcessBuilder pb = new ProcessBuilder("cmd", "/c start cmd /c java -jar bla.jar");
            Process p = pb.start();
            processes.add(p);
        }
    } catch (IOException ex) {
    }
}

问题是以“cmd start”开始的进程在执行子进程后立即退出(因此,没有IllegalThreadStateException)。 如何跟踪子流程(是否终止)? 或者:如何在不使用“cmd start”的情况下在单独的cmd中启动子流程。 我需要将已启动的例程放在新的cmd中。

提前多多感谢。

1 个答案:

答案 0 :(得分:1)

您需要在开始时使用/ wait标志

cmd /c start /wait java -jar bla.jar