如何获得流程状态?

时间:2013-12-25 12:13:38

标签: java exec processbuilder

如何获取进程状态,即运行或完成。

我正在通过以下方式创建新流程:

processBuilder();

2 个答案:

答案 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;
    }
}

然后你可以继续做其他工作并调用上面的方法来检查状态,并在需要时。