如何获取进程状态,即运行或完成。
我正在通过以下方式创建新流程:
processBuilder();
答案 0 :(得分:1)
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Process p = pb.start();
接着是
p.exitValue() //throws an IllegalThreadStateException - if the subprocess represented by //this Process object has not yet terminated.
文档中的无耻复制和粘贴作业,顺便说一句。永远是一个好的开始。
答案 1 :(得分:1)
如果您使用waitFor
,则没有可用的直接方法可以为您提供进程状态,那么您当前的线程将等待进程终止。
所以你可以使用exitValue
函数包装在这样的函数中,
public static boolean isProcessRunning(Process process)
{
try
{
process.exitValue();
return false;
}
catch(IllegalThreadStateException e)
{
return true;
}
}
然后你可以继续做其他工作并调用上面的方法来检查状态,并在需要时。