【问题标题】:preventing child JVM from exiting when its parent JVM exits防止子JVM在其父JVM退出时退出
【发布时间】:2016-04-08 11:43:19
【问题描述】:

我有一个父 JVM(我将其称为 JVM_parent),在其中我使用 Runtime.getRuntime().exec("java .......") 启动了另一个 JVM(我将其称为 JVM_child

现在,当我关闭(正常或强制)JVM_parent 时,JVM_child 也会退出。

JVM_parent 关闭时,如何防止 JVM_child 被关闭?我在 Linux 上运行。

【问题讨论】:

  • 您可以试试这个答案:stackoverflow.com/questions/931536/… 问题是您需要将子进程与父进程分离,并且该过程因操作系统而异。
  • @sagneta +1 是的,分离父母和孩子是关键。让我试试。
  • 无法使用 bash -c 或 /bin/sh -c 选项分离。
  • 为什么不呢?每个 Linux 系统都有bash 命令!
  • 我唯一能想到的另一件事是创建一个 bash 脚本,该脚本使用“nohup &”来执行您的其他进程。那就是你想要这样的一行: nohup ./myprogram &

标签: java linux process jvm


【解决方案1】:

子进程将从父进程继承,因此终止信号也将终止子进程。为防止这种情况,您需要将子级与父级分离,这样它就不会收到这些信号并继续。

使用它的最简单方法是运行类似bash nohup prog & 的东西,它在一个单独的子进程中运行它并且不听HUP 信号。请注意,运行 bash -c 是不够的。您可以使用 pstree 之类的信息来判断 bash 进程是否已完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多