2

可能重复:
知道在 Windows 机器上要杀死哪个 java.exe 进程
如何在给定特定 PID 的情况下杀死 Java 中的进程

我试图找出如何关闭特定的外部 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();

    }

}
4

2 回答 2

7

您可以通过执行一个进程来关闭要关闭的进程来做到这一点。

在您的评论中我可以看到taskkill,这意味着您可能正在使用 Windows。

Runtime rt = Runtime.getRuntime();

rt.exec("taskkill /F /IM cwserv5.exe");

这将强制使用图像名称的过程cwserv5.exe结束。

如果您不想强制它结束,请不要使用/f标签。

有关 的更多信息taskkill,请转到cmd(命令提示符)并键入taskkill /?

于 2012-08-27T11:02:38.270 回答
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
    }
于 2012-08-27T11:03:41.753 回答