如何检查Runtime.exec(cmd)是否已完成?
它正在运行但是如何在java程序中检查命令是否执行?
如果我使用进程检查那么它会阻塞当前线程。如果我停止运行程序,则执行Runtime.exec(cmd)。我该怎么办?
答案 0 :(得分:7)
Process
实例可以帮助您通过InputStream和Outpustream来操作运行时的执行。
流程实例有一个waitFor()
方法,允许当前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;
}
并获取处理结果的简单示例(请注意,这将阻止当前线程,直到进程结束)。
void execute_all()
{
while (!handlers_.empty())
{
queued_handler handler = handlers_.top();
handler.execute(); //point1
handlers_.pop(); //point2
}
}