【发布时间】:2013-08-13 15:16:03
【问题描述】:
当创建进程的运行时终止时,通过Runtime.exec 创建的Java Process 是否被杀死?还是我必须手动杀死它们,例如通过安装关闭钩子并通过Process.destroy 杀死所有剩余进程。 javadoc 只讨论当运行时继续存在时会发生什么。
【问题讨论】:
当创建进程的运行时终止时,通过Runtime.exec 创建的Java Process 是否被杀死?还是我必须手动杀死它们,例如通过安装关闭钩子并通过Process.destroy 杀死所有剩余进程。 javadoc 只讨论当运行时继续存在时会发生什么。
【问题讨论】:
Java Process 被创建为 JVM 的子进程。我所知道的所有操作系统都会在父进程终止时杀死子进程。
但是,如果您创建的进程派生出自己的进程,而不是其子进程(或分离,例如在 Windows GUI 应用程序的情况下),则这些进程可能会在 JVM 终止后继续运行。有一个问题可能与in this question 描述的有关。
【讨论】:
Process,无论它是如何创建的,都代表创建过程的子过程。事实上,这对于访问新进程的输入和输出流是必要的。在你喜欢的任务管理器中查看进程树,你会看到 JVM 是父进程。