在java中主程序退出后停止子进程

在java中主程序退出后停止子进程,java,ubuntu,process,processbuilder,process-management,Java,Ubuntu,Process,Processbuilder,Process Management,我已经编写了一个Java程序来运行一些特殊任务的其他进程。我想满足一个条件,即如果主java进程结束或退出,所有子进程都应该退出。我在java程序中使用了以下代码: processBuilder = new ProcessBuilder(command); processBuilder.redirectErrorStream(true); process = processBuilder.start(); 我知道有时候这不会发生。要执行的示例命令可能正在调用程序或shell文件。我使用了wai

我已经编写了一个Java程序来运行一些特殊任务的其他进程。我想满足一个条件,即如果主java进程结束或退出,所有子进程都应该退出。我在java程序中使用了以下代码:

processBuilder = new ProcessBuilder(command);
processBuilder.redirectErrorStream(true);
process = processBuilder.start();
我知道有时候这不会发生。要执行的示例命令可能正在调用程序或shell文件。我使用了
waitFor()
,但效果不佳。我使用Ubuntu 12.04和java 7.21。有人能帮我吗

编辑:
我希望操作系统停止子进程,即使主java进程意外退出。

使用
shutdownhook
可能会重复指定的解决方案。我希望操作系统停止子进程,即使java进程意外退出;但我同意答案并不令人满意。也许使用包装器(参见示例)会有所帮助?我已经撤回了我的“关闭”标志——让我们看看是否有人提出了比“无法完成”更好的答案。