如您所知,您可以使用以下方式向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();
// ...
}