如何停止Java中由ProcessBuilder启动的进程

9

我在Java中使用ProcessBuilder启动进程。可能会启动多个进程。如何停止一个进程?

public void terminalExecute(String builder) throws InterruptedException
{
    System.out.println(builder);
    String[] splits = builder.split(" ");
    System.out.println(splits.length);

    ProcessBuilder pb = new ProcessBuilder(splits[0],splits[1],splits[2],splits[3],splits[4],splits[5],splits[6],splits[7]);
    Process p = null ;
    pb.redirectErrorStream(true); 
    try {
        p = pb.start();

        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String s = "";
        while((s = in.readLine()) != null){
            System.out.println(s);
        }
        int status = p.waitFor();
        System.out.println("Exited with status: " + status);
    } catch (IOException e) {
        e.printStackTrace();
    }

   
}

在另一个类中,我这样调用了这个函数:
 String cmd ="java -Xmx3024m -XX:MaxPermSize=512m -Xms1024m -cp "+ ConfReader.getAFFJarPath()+" core.StrWorkflow "+new BigInteger(serviceRequest.getBytes());
 ProcessExecutor procExec = new ProcessExecutor();
 procExec.terminalExecute(cmd);

在这个类中,我如何获取进程ID?

添加代码以展示您首先如何启动进程以及您尝试了什么? - Arkantos
1
你从中得到了一个Process对象吗?如果是这样,你可以通过调用它的"destroy()"方法来终止它。//编辑:你从你的方法中得到了一个Process对象(Process yourProcess = terminalExecute([...]))。只需调用yourProcess.destroy()! - Graphican0
1个回答

10

1
destroy() 返回错误的退出值。有没有办法优雅地终止该进程? - Marian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接