Ste*_*eod 14 java process-management subprocess runtime shutdown
我用Java启动子进程如下:
final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
它现在在后台运行.一切都好又好.
如果我现在的程序崩溃(这是仍然在开发中:-))子进程似乎仍流连.如何在父Java进程终止时自动结束?
如果它有帮助,我使用的是Mac OS X 10.5
Von*_*onC 10
如你所说,addShutdownHook是要走的路.
但:
如果程序终止,则无法保证执行关闭挂钩.有人可能会杀死Java进程,在这种情况下,您的关闭挂钩将不会被执行.(如本SO问题所述)
一些标准库有自己的钩子,可以在你的之前运行.
小心死锁.
另一种可能性是将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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8876 次 |
| 最近记录: |