我需要调试一个在一开始就启动多个进程的项目,所有这些都是用Java编写的。
我的问题是调试这样的代码非常烦人。因为每次我完成一个调试会话所有其他进程都停留在内存中并且杀死所有进程非常烦人(因为它们没有进程名称而且它们都是“java”)。
是否可以自动进行所有杀戮? 或任何其他解决方案?
答案 0 :(得分:0)
您需要调用process.destroy
才能终止子进程。您可以为应用程序创建一个关闭挂钩,并将此调用添加到它。
您需要测试它是否在调试器中有效,但无论如何都要好,因为它可以确保您的应用程序干净地关闭。
以下是一个例子:
// start a sub process
final Process childProcess = new ProcessBuilder("some command").start();
// add a shutdown hook which will be invoked when the JVM is shutting down
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
childProcess.destroy();
}
});
答案 1 :(得分:0)
似乎没有办法!