我怎么摆脱Java儿童的进程时,我Java应用程序退出/崩溃?
-
06-07-2019 - |
题
我启动一个孩子的过程中Java如下:
final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
它现在运行的背景。所有好的和罚款。
如果我的计划现在崩溃(它 是 仍在开发:-))的儿童过程中似乎仍然挂在周围。我怎么能让它自动结束的时候,父Java过程中死亡?
如果有帮助,我使用的是Mac OS X10.5
解决方案
正如你说的, addShutdownHook 是的路要走。
但是:
有没有真正保证您关闭挂钩是执行,如果程序的终止。有人能杀了Java进程和在这种情况下,你的关机钩,将不会执行。(如说在这 所以问题)
一些标准图书馆都有自己挂钩,可以运行之前你的。
要注意的僵局。
另一种可能性 包装你的java程序中的一个服务.
其他提示
我已经把它自己解决了。我添加了一个关闭钩子,如下所示:
final String[] cmd = {"<childProcessName>"};
final Process process = Runtime.getRuntime().exec(cmd);
Runnable runnable = new Runnable() {
public void run() {
process.destroy();
}
};
Runtime.getRuntime().addShutdownHook(new Thread(runnable));
不隶属于 StackOverflow