如何将超时添加到Runtime.exec(),但检查退出值



如您所知,您可以使用以下方式向Exec((添加超时:

Process p = ...
if(!p.waitFor(1, TimeUnit.MINUTES)) {
    //timeout - kill the process. 
    p.destroyForcibly();
}

问题是,使用该代码段,您不知道该过程的结果值,我需要知道它,因为我需要知道退出值是0(成功(还是不同的0(错误(。

有没有办法实现这一目标?

如果使用旧方法,则可以,但与超时不兼容:

exit = process.waitFor();

您可以使用p.exitValue()来持有退出值,但是请注意,如果此过程对象尚未终止,则您将获得IllegalThreadStateException,因此请勿使用此方法如果waitFor()乘以。

Process p = ...
if(!p.waitFor(1, TimeUnit.MINUTES)) {
    //timeout - kill the process. 
    p.destroyForcibly();
} else {
    int exitValue = p.exitValue();
    // ...
}

相关内容

  • 没有找到相关文章

最新更新