首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭生成的java子进程正常运行

问关闭生成的java子进程正常运行
EN

Stack Overflow用户
提问于 2011-08-20 18:29:12
回答 2查看 2.3K关注 0票数 0

我使用ProcessBuilder产生一个子进程,用于执行将一些数据写入文件系统。出现问题是因为父进程可能会意外崩溃/终止,即使我使用jps检查其父进程是否死了,子进程也会挂起。派生的子进程检测其父进程是否已死,然后退出的正确方式是什么?

此外,在互联网上搜索后,大多数解决方案都使用Runtime.addShutdownHook(),但ProcessBuilder中没有提供这一功能。它有没有等同的?

EN

回答 2

Stack Overflow用户

发布于 2011-08-20 19:10:39

你对这个问题做了很好的研究。因此,您可能希望使用对Process实例和您提到的Runtime.addShutdownHook(Thread)方法的返回引用。这是我认为你需要采取的最后一步:

代码语言:javascript
复制
List commands = new ArrayList();
commands.add("xeyes"); // launch this command
ProcessBuilder pb = new ProcessBuilder(commands);
final Process p = pb.start();
Runtime.getRuntime().addShutdownHook(new Thread() {
  @Override
  public void run() {
    p.destroy();
  }
});

Thread.sleep(2000); // sleep for some time
票数 3
EN

Stack Overflow用户

发布于 2015-05-12 17:28:28

在类似的情况下,我实现了一个心跳机制,其中父进程必须定期发送心跳。如果没有发生这种情况,子进程将自动关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7131209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档