我想同步运行进程,而不求助于异步运行。
考虑代码
ProcessBuilder pb = new ProcessBuilder(COMMAND);
LOGGER.info(String.join(" ", COMMAND));
pb.redirectErrorStream(true);
Process cmdProces = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(cmdProces.getInputStream()));
String line;
while ((line = reader.readLine()) != null) System.out.println("tasklist: " + line);
cmdProces.waitFor(); // (1)
LOGGER.info("Script executed ");
// Java reference to output file of COMMAND
此代码段位于调度程序内部,该调度程序每30秒执行一次。下一次执行在上一次运行完成之前执行。我检查了文档,上面写着
当不再有引用时,子进程不会被杀死。 流程对象,但子流程继续执行 异步。
现在,我想说我的脚本COMMAND
仍在运行,但是java解释为没有更多引用。我该如何预防?是否必须等到COMMAND
完成? COMMAND
的输出显示脚本已完成。是否可以等待此输出?还是这很不利?