2015-06-24 101 views
2

如何检查Runtime.exec(cmd)是否完成?如何检查Runtime.exec(cmd)是否完成

它正在运行,但我如何检查命令执行或不在java程序中?

如果我使用进程检查然后它阻塞当前线程。如果我停止运行程序,那么Runtime.exec(cmd)正在执行。我该怎么办?

+0

http://stackoverflow.com/questions/6873830/in-java-determine-if-a-process-created-using-runtime-environment-has-finished-ex –

+0

如果我关闭当前线程然后cmd正在执行。 – jagannath

+0

关闭当前线程是什么意思? –

回答

3

Process实例可以帮助您通过其InputStream和Outpustream操纵运行时的执行。

流程实例有一个waitFor()方法,该方法允许当前Thread等待子流程的终止。

要控制流程的完成,您还可以获取运行时的exitValue,但这取决于流程返回的内容。

下面是如何使用waitFor并获取处理结果的简单示例(请注意,这会阻止当前的线程,直到进程结束)。

public int runCommand(String command) throws IOException 
{ 
    int returnValue = -1; 
    try { 
     Process process = Runtime.getRuntime().exec(command); 
     process.waitFor(); 
     returnValue = process.exitValue(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

    return returnValue; 
} 
+0

请注意,这将阻止当前的线程,直到进程结束。我不想阻止当前线程,那我该怎么办? – jagannath

+0

然后你应该在另一个线程中完成这项工作。看看关于并发性的java教程。 http://docs.oracle.com/javase/tutorial/essential/concurrency/ –

+0

谢谢你,它为我工作 – jagannath