1. ホーム
  2. java

Javaを使ったプロセスの強制終了

2023-09-11 09:50:29

質問

起動したプロセスを kill する方法を知りたいです。私は Process API を知っていますが、firefox.exe などのすでに実行中のプロセスを殺すためにそれを使用できるかどうか、確信がありません。Process APIが使用できるのであれば、正しい方向を示していただけませんか?そうでない場合、他の利用可能なオプションは何ですか?ありがとうございます。

どのように解決するのですか?

Javaアプリケーションの内部から処理を開始した場合(例. Runtime.exec() または ProcessBuilder.start() ) であれば、有効な Process への有効な参照を持ち、その参照に対して destroy() メソッドを Process クラスでその特定のプロセスを kill します。

しかし、呼び出したプロセスが新しいサブプロセスを作成した場合、 それらのプロセスは終了しない可能性があることに注意してください ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4770092 ).

一方、外部プロセス (Java アプリから生成したのではない) を停止したい場合、それを可能にする O/S ユーティリティを呼び出すことができます。たとえば Runtime.exec()kill コマンドを実行し、アプリケーションが終了したかどうかを確認するために戻り値をチェックします (0 は成功、-1 はエラーを意味します)。しかし、これはもちろん、アプリケーションをプラットフォームに依存させることになります。