在 Java 中,我使用 Process builder 在 shell 上触发一个命令,在触发该命令后,我想知道它的进度是否完整。如果调用的进程花费了太多时间,我想在某个时间限制后终止该进程。例如,如果进程执行时间超过 5 秒,我想终止该后端进程,如果它在 5 秒内完成,我想继续使用该后端进程的输出。在python中有一个名为returncode的类变量,它最初为null,然后在进程完成执行后变为0,我可以继续检查该值,如果5秒后它为null,我可以简单地终止该进程。我怎样才能在 Java 中做同样的事情?
问问题
2196 次
1 回答
2
Process#exitValue()
如果进程尚未终止,方法将引发异常。
您可以启动该进程,休眠 5 秒并调用exitValue()
. 如果你得到IllegalThreadStateException
它意味着进程仍在运行,你可以用destroy()
方法杀死它:
Process p = ...
try {
Thread.sleep(5 * 1000);
int exitValue = p.exitValue();
// get the process results here
} catch (IllegalThreadStateException e) {
// process hasn't terminated in 5 sec
p.destroy();
}
于 2013-09-29T07:00:33.950 回答