1

我正在做一个需要在 MAC OS 中多次运行 shell 文件的项目。shell 文件将每次运行的结果写入单独的日志文件。为了加快这个过程,我必须使用我们机器中所有可用的内核。我尝试在 Java 中使用 BuildProcess 来做到这一点。它可以正常工作几秒钟,但过程会在几秒钟后停止。在单核机器上运行时,每个进程大约需要 18 个小时。例如,如果运行以下命令,它会启动两个进程并让它们运行大约 10 秒,但随后它们将被杀死而没有错误!

ProcessBuilder pb1 = new ProcessBuilder("/bin/bash", "runFS.sh")
Process p1 = pb1.start()

ProcessBuilder pb2 = new ProcessBuilder("/bin/bash", "runFS.sh")
Process p2 = pb2.start();

非常感激任何的帮助。

4

1 回答 1

0

如果您的示例代码可以通过,那么您就缺少p1.waitFor()p2.waitFor()在子进程运行时实际保持主进程处于活动状态。因此,当您的 JVM 关闭时,它也会杀死您启动的进程。

于 2013-07-05T05:36:24.587 回答