2015-06-24 99 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