可能重复:
Knowing which java.exe process to kill on a windows machine
How to kill a process in Java, given a specific PID
我试图找出如何关闭特定的外部exe,即cwserv5.exe。我成功地启动了一个新的外部exe并关闭它。但不是现有的进程。你能帮我吗?以下是我在修修补补但真的输给了老实人
package com.TestCase;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ReStartEXE {
static Process pr;
public static void open() {
//ProcessBuilder
try {
Runtime rt = Runtime.getRuntime();
//Process pr = rt.exec("cmd /c dir");
pr = rt.exec("C:\\APPLEGREEN\\webserv\\cwserv5rost.exe");
Thread.sleep(10000);
//pr.wait(10000);
//pr.waitFor();
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
// String line=null;
/*while((line=input.readLine()) != null) {
System.out.println(line);
}*/
//int exitVal = pr.waitFor();
//pr.destroy();
// Process.kill(pr);
// Runtime.getRuntime().exec("taskkill /F /IM cwserv5rost.exe");
//System.out.println("Exited with error code "+exitVal);
} catch(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
public static void Close() {
pr.destroy();
}
}
答案 0 :(得分:5)
您可以通过执行关闭要关闭的流程的流程来执行此操作。
在您的评论中,我可以看到taskkill
,这意味着您可能正在使用Windows。
Runtime rt = Runtime.getRuntime();
rt.exec("taskkill /F /IM cwserv5.exe");
这将强制图像名称为cwserv5.exe
的流程结束。
如果您不想强制结束,请不要使用/f
标记。
有关taskkill
的详细信息,请转到cmd
(命令提示符)并输入taskkill /?
。
答案 1 :(得分:1)
试试这个,
Process proc = rt.exec("taskkill /F /IM cwserv5.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ((line = input.readLine()) != null){
//do something
}
input.close();
code = proc.exitValue();
if(code==0){
//success
}
else{
//failure
}