0

特定の数の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 でサブプロセスを開始するにはどうすればよいですか。開始されたルーチンを新しいコマンドに含める必要があります。

よろしくお願いします。

4

1 に答える 1

1

開始時に /wait フラグを使用する必要があります

cmd /c start /wait java -jar bla.jar
于 2012-08-16T22:45:23.920 に答える