java - 确保通过 Runtime.exec() 运行的程序将与 Java 应用程序一起死亡

标签 java process runtime

在我的 java 程序中,我通过 Runtime.exec 调用外部程序并调用 Process.waitFor 以等待其完成。这是一些长时间运行的脚本。我想确保如果我的 Java 应用程序出现任何问题(例如,从外部被杀死,顺便说一句,在我的情况下确实不时发生)外部运行脚本也会死掉。

我查看了 Runtime.addShutdownHook,它可能适用于此,但它明确指出,例如在 SIGKILL 上,无法保证 shutdownhook 是否会或不会运行。

有没有其他方法可以确保从 Java 运行的外部程序与调用 java 进程一起死掉?

谢谢

最佳答案

如果“Runtime.addShutdownHook”还不够,我认为从 Java 方面来看你运气不好。一些想法:

  1. 您的脚本可以测试 java 应用程序是否仍在运行并在需要时终止
  2. 让您的 Java 应用更新带有时间戳的文件,并让您的脚本定期检查时间戳是否过旧(并终止)
  3. 编辑: 启动另一个只监视 java 应用程序和脚本的进程,并在 java 应用程序消失时终止脚本(当然,如果这个进程被终止,你又要倒霉了)

关于java - 确保通过 Runtime.exec() 运行的程序将与 Java 应用程序一起死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963283/

相关文章:

java通过命令获取批处理文件命令的输出

java - 对本地选项集的 InsertOptionValue 操作

java - 从 R 调用 Java 类时的问题

java - 如何在没有内存问题的情况下使用 REST 模板 Spring MVC 获取大型 JSON

unix - 如何等待三个子进程?

iphone - 区分iPhone应用程序的开发版本

java - 在 jenkinsx Minikube 中更改 _JAVA_OPTIONS

bash - nohup 和 enter 将停止进程 : why?

java - XML 模式与 Java 代码的运行时绑定(bind)

vb.net - 在VB.Net中动态添加图片框