当前位置:  开发笔记 > 编程语言 > 正文

当我的Java应用程序退出/崩溃时,如何摆脱Java子进程?

如何解决《当我的Java应用程序退出/崩溃时,如何摆脱Java子进程?》经验,为你挑选了2个好方法。

我用Java启动子进程如下:

final String[] cmd = {""};
Process process = Runtime.getRuntime().exec(cmd);

它现在在后台运行.一切都好又好.

如果我现在的程序崩溃(这仍然在开发中:-))子进程似乎仍流连.如何在父Java进程终止时自动结束?

如果它有帮助,我使用的是Mac OS X 10.5



1> VonC..:

如你所说,addShutdownHook是要走的路.

但:

如果程序终止,则无法保证执行关闭挂钩.有人可能会杀死Java进程,在这种情况下,您的关闭挂钩将不会被执行.(如本SO问题所述)

一些标准库有自己的钩子,可以在你的之前运行.

小心死锁.

另一种可能性是将java程序包装在服务中.



2> Steve McLeod..:

我已经把它自己解决了.我添加了一个关闭钩子,如下所示:

final String[] cmd = {""};
final Process process = Runtime.getRuntime().exec(cmd);
Runnable runnable = new Runnable() {
    public void run() {
        process.destroy();
    }
};
Runtime.getRuntime().addShutdownHook(new Thread(runnable));

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有