【问题标题】:How to get process state?如何获取进程状态?
【发布时间】:2013-12-25 12:13:37
【问题描述】:

如何获取进程状态,即它正在运行还是已完成。

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

processBuilder();

【问题讨论】:

  • “任何帮助将不胜感激。谢谢:” A '?'添加到问题中比添加此类噪音更有可能引起帮助。顺便说一句-您指的是什么“状态”?对于“完成”,请查看 Process.waitFor()exitValue()
  • 可能是that可以帮到你。
  • Java 附带了非常全面的文档,请查看 ProcessProcessBuilder 对象。如果您仍有问题,请表明您已阅读文档并改进您的问题。仅供参考:它的ProcessBuilder 不是processBuilder
  • 你真的应该接受一个答案。事实上,这个几乎重复的问题应该被关闭。请客气一点。

标签: java exec processbuilder


【解决方案1】:

如果您使用waitFor,则没有直接的方法可以为您提供进程的状态,那么您当前的线程将等待进程终止。
所以你可以使用exitValue函数包裹在类似这样的函数中,

public static boolean isProcessRunning(Process process) 
{
    try 
    {
        process.exitValue();
        return false;
    } 
    catch(IllegalThreadStateException e) 
    {
        return true;
    }
}

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

【讨论】:

    【解决方案2】:
    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.
    

    顺便说一句,文档中的无耻复制和粘贴工作。总是一个很好的起点。

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多