如您所知,您可以使用以下方法向 exec() 添加超时:
Process p = ...
if(!p.waitFor(1, TimeUnit.MINUTES)) {
//timeout - kill the process.
p.destroyForcibly();
}
问题是使用该代码片段您无法知道过程的结果值,而我需要知道它,因为我需要知道退出值是 0(成功)还是不同的 0(错误) .
有什么办法可以实现吗?
如果你使用旧方法,你可以,但不兼容超时:
exit = process.waitFor();
最佳答案
您可以使用 p.exitValue()
获取退出值,但请注意,如果此 Process 对象表示的子进程具有尚未终止,因此如果 waitFor()
超时,请不要使用此方法。
Process p = ...
if(!p.waitFor(1, TimeUnit.MINUTES)) {
//timeout - kill the process.
p.destroyForcibly();
} else {
int exitValue = p.exitValue();
// ...
}
关于java - 如何向 Runtime.exec() 添加超时但检查退出值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48884330/