我正在尝试编写一个小工具,如果它们已被终止,它会重新启动一定数量的 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 中。
提前非常感谢。