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