【发布时间】:2016-06-25 12:18:37
【问题描述】:
我的 java 程序以下列方式创建一个进程:
ProcessBuilder builder = new ProcessBuilder("phantomjs.exe crawl.js");
Process proc = builder.start();
如果 java 程序突然终止(可能总是发生),phantomjs 进程(它不是 java 进程)可以保持活动状态并且没有办法终止它。
我希望 phantomjs 进程在封闭的 java 进程终止时终止(无论是否突然)。
有没有办法将Process 实例定义为“守护程序”对象,当其超级进程(即执行上述代码的 java 进程)终止时自动终止?
【问题讨论】:
-
为什么不使用shutdown hooks?
-
当进程突然关闭时,关闭挂钩将无济于事
-
@GentiSaliu 我不认为 javascript 标签具有误导性。有人可能会想出一种方法来从 phantomjs 执行的 javascript 代码中做我需要的事情。
-
您的问题含糊不清。 “如果java程序突然终止...... phantomjs进程......可以保持活动状态” - 和“有没有办法将Process实例定义为“守护进程”对象,在终止时终止其所有子进程? " - 是两个不同的问题。您希望进程 (phantomjs.exe) 在终止时终止 其 子进程,如您所问,还是希望在包含的 Java 进程终止时终止进程?
-
对不起,如果我不够清楚。我希望 phantomjs.exe 进程在其“父”java 进程突然终止时终止。