我需要调试一个从一开始就启动多个进程的项目,全部使用 Java。
我的问题是调试这样的代码非常烦人。因为每次我完成调试会话时,所有其他进程都卡在内存中并杀死所有进程非常烦人(因为它们没有进程名称并且它们都是“java”)。
是否有可能自动完成所有杀戮?或任何其他解决方案?
您需要调用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();
}
});
好像没有办法!