该Runtime.exec(...)
命令返回一个Process
对象。您可以将Process
对象放入集合中,然后使用该Process.exitValue()
方法查看每个过程是否已完成。 如果进程仍在运行,则exitValue()
抛出 a 。IllegalThreadStateException
所以你的代码可能是这样的:
List<Process> processes = new ArrayList<Process>();
// noticed I turned your while loop into a for loop
for (i = 0; i < 10 i++) {
int arg1 = i + 1;
Process p = rt.exec("abc.exe "+ arg1);
processes.add(p);
}
...
// watch them to see if any of them has finished
// this can be done periodically in a thread
for (Process process : processes) {
try {
if (process.exitValue() != 0) {
// it did not exit with a 0 so restart it
...
}
} catch (IllegalThreadStateException e) {
// still running so we can ignore the exception
}
}
我可以在 Linux 和 Windows 上追踪这个东西吗?
如果我理解这个问题,上面的代码应该可以在 Lunux 和 Windows 上运行。