java - 如何向 Runtime.exec() 添加超时但检查退出值?

标签 java process timeout runtime exec

如您所知,您可以使用以下方法向 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/

相关文章:

java - 正则表达式获取正确的java类名

iphone - 如何在 App Store 批准的应用程序中获取有关可用内存和正在运行的进程的信息? (是的,有一个!)

c# - 在单独的进程中部署 Akka.net 参与者

web-applications - 当用户离开页面时如何取消angularjs $timeout

java - 如何存储具有不同行为的相似对象?

java - 如果知道集合中只有一个对象,如何从中获取对象?

java - 将 int 添加到数组

用于检查进程是否正在运行并对结果采取行动的 Linux 脚本

linux - 在指定时间运行 bash linux 命令

javascript - 如何在 node.js 中的一定持续时间后强制解决 promise ?