守护进程java进程 - 有这样的事吗?

时间:2016-03-10 15:04:06

标签: java phantomjs daemon

我的java程序以下列方式创建进程:

ProcessBuilder builder = new ProcessBuilder("phantomjs.exe crawl.js");
Process proc = builder.start();

如果java程序突然终止(可能总是发生),那么phantomjs进程(不是java进程)可以保持活动状态,并且无法终止它。

我希望在封闭的java进程终止时(无论是否突然)终止phantomjs进程。

有没有办法将Process实例定义为"守护进程"当超级进程(执行上面代码的java进程)终止时自动终止的对象?

2 个答案:

答案 0 :(得分:1)

API documentation似乎很明确,没有资格或狡猾的措辞:

  

当没有对Process对象的引用时,子进程不会被终止,而是子进程继续异步执行。

所以父母必须杀死它,当父母终止时它不会消失。

答案 1 :(得分:0)

这不是一个很好的解决方案,但您可以随时从子项中定期检查父项的 PID。