8

java Runtime.exec() メソッドを使用してbatファイルを実行しています。batファイルには、jarを実行するコードを記述しています。このjarには、rabbitmqキューを無限にプールするスレッドクラスが含まれています。プロセスは無限に実行されます。Javaコードを使用してこのプロセスを強制終了したいのですが、このメソッドがLinux OS上でスクリプトを実行できるかどうかも知りたいです。

 **Used java code**

 String myCMD = "cmd.exe /C start c:\\elasticmgmtservice.bat";
 Runtime rt = Runtime.getRuntime();
 Process proc = rt.exec(myCMD);

**used batch file**

cd c: 
cd ElasticMgmtService\ 
java -jar ElasticIndexManagementService.jar config\ElasticIndexManagementService.xml

問題を解決するのを手伝ってください。

4

3 に答える 3

3

Runtime.exec(...)Processは、次のメソッドで構成されるオブジェクトを返します

  • 破壊する()
  • exitValue()
  • getErrorStream()
  • getInputStream()
  • getOutputStream()
  • を待つ()

サブプロセスを強制終了する destroy() を呼び出すことができます。この Process オブジェクトによって表されるサブプロセスは強制的に終了されます。または、渡すことtaskkill /PID <process id>で殺すことができますRuntime.exec(...)kill -9 <process id>

于 2012-05-03T12:50:52.767 に答える
2

Windows の場合

Runtime rt = Runtime.getRuntime();
rt.exec("taskkill " +<Your process>);

Linux の場合

Runtime rt = Runtime.getRuntime();
rt.exec("kill -9 " +<Your process>);
于 2012-05-03T12:47:54.823 に答える
0

Runtime.exec()exec メソッドが作成したプロセスのハンドラである Process オブジェクトを返します。このプロセスを強制終了するには、呼び出す必要がありますProcess.destroy();

于 2012-05-03T12:43:09.980 に答える