最初に複数のプロセスを開始するプロジェクトをすべて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();
}
});
仕方がないようです!