如何使用java关闭运行进程?

时间:2012-05-03 12:32:41

标签: java

我正在使用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

请帮我解决问题。

3 个答案:

答案 0 :(得分:2)

在Windows中

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

在Linux中

Runtime rt = Runtime.getRuntime();
rt.exec("kill -9 " +<Your process>);

答案 1 :(得分:2)

Runtime.exec(...)返回Process对象,其中包含以下方法

  • 破坏()
  • exitValue()
  • getErrorStream()
  • getInputStream()
  • getOutputStream()
  • WAITFOR()

你可以调用destroy()来杀死子进程。此Process对象表示的子进程被强制终止。 或者你可以通过在taskkill /PID <process id>Runtime.exec(...)

中传递kill -9 <process id>来杀人

答案 2 :(得分:0)

Runtime.exec()返回一个Process对象,它是exec方法创建的进程的处理程序。要终止此过程,您必须致电Process.destroy();