Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中停止ProcessBuilder启动的进程_Java_Scala - Fatal编程技术网

如何在java中停止ProcessBuilder启动的进程

如何在java中停止ProcessBuilder启动的进程,java,scala,Java,Scala,我使用Java中的ProcessBuilder启动进程。可以启动多个进程。如何停止进程 public void terminalExecute(String builder) throws InterruptedException { System.out.println(builder); String[] splits = builder.split(" "); System.out.println(splits.length); Pro

我使用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?

start()
方法的
ProcessBuilder
返回一个
进程
实例。您可以对其调用
destroy()
方法


请参阅:

添加代码以显示您首先是如何启动流程的,您尝试了什么?您从中获得了对象吗?如果是这样,您可以通过对其调用方法“destroy()”来杀死它。//编辑:您从方法中获得了一个流程对象(processyourprocess=terminalExecute([…])。只需调用您的进程。destroy()<代码>销毁()返回错误退出值。有没有办法让流程优雅地终止?