Javaアプリがあり、外部プロセスを作成し、InputStreamを介してプロセスの標準出力を読み取ります。プロセスが終了したらプロセスを強制終了できる必要があります。方法はありますか?このプロセスにSIGINTシグナルを送信しますか?(コンソールからCtrl + Cを押したかのように)。
外部プロセスは私のコードではなく、変更できません。
外部プログラムを_Java.lang.Process
_として実行していますか? Processクラスにはdestroy()
メソッドがあるため。
送って頂けますか kill -SIGINT <pid>
プロセスへ(プロセスIDを知っている場合):
Runtime.getRuntime().exec("kill -SIGINT 12345");
もちろん、それはプラットフォームに依存するソリューションになります...潜在的に、このツールは「サンドボックスモード」ですが、使用できるようになります。しかし、それはあなたにアイデアを与えるかもしれません:
http://commons.Apache.org/sandbox/runtime/
こちらの関連する質問もご覧ください。
Java with SIGKILL Process.destroy()does SIGTERM でLinuxプロセスを強制終了するにはどうすればよいですか?
現在のプロセス(別名JVM)にシグナルを送信したい場合、Googleからここに到着する他の人は、Sun.misc.Signal.raise()
メソッドを使用できます。個人的には、使用しているJNIライブラリのために必要です。
残念ながら、Javaでarbirtrayシグナルを送信するネイティブな方法はありません。
Runtime.exec()の使用についてLukasに同意します。または、 Posix for Java ライブラリのようなものを使用することもできます。