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

守护程序java进程-有这样的事情吗?,java,phantomjs,daemon,Java,Phantomjs,Daemon,我的java程序以以下方式创建一个进程: ProcessBuilder builder = new ProcessBuilder("phantomjs.exe crawl.js"); Process proc = builder.start(); 如果java程序突然终止(可能总是发生),phantomjs进程(不是java进程)可能会保持活动状态,并且无法终止它 我希望phantomjs进程在封闭的java进程终止时终止(无论是否突然终止) 有没有办法将进程实例定义为一个“守护进程”对象,当

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

ProcessBuilder builder = new ProcessBuilder("phantomjs.exe crawl.js");
Process proc = builder.start();
如果java程序突然终止(可能总是发生),phantomjs进程(不是java进程)可能会保持活动状态,并且无法终止它

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

有没有办法将
进程
实例定义为一个“守护进程”对象,当其超级进程(即执行上述代码的java进程)终止时,该对象会自动终止?

似乎非常明确,没有任何限制或迂回的措辞:

当不再有对流程对象的引用时,不会终止子流程,而是子流程继续异步执行


因此,父进程必须杀死它,当父进程终止时,它不会消失。

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

为什么不使用?关闭钩子在进程关闭时没有帮助abruptly@GentiSaliu我不认为javascript标记有误导性。有人可能会想出一种方法,在phantomjs执行的javascript代码中实现我所需要的功能。“如果java程序突然终止…phantomjs进程…可以保持活动状态”-和“有没有办法将进程实例定义为终止时终止其所有子进程的“守护进程”对象?”-是两个不同的问题。您希望进程(phantomjs.exe)在终止时终止其子进程(如您所问),还是希望在包含Java进程的进程终止时终止该进程?如果我不够清楚,很抱歉。我希望phantomjs.exe进程在其“父”java进程突然终止时终止。我想知道是否有任何框架或第三方库可以包装流程对象并提供所需的功能。@KidClimper:对,我知道这提供的价值有限。我想如果这是不对的,并且有某种选择,有人会把它击落。