![](/img/trans.png)
[英]In java determine if a process created using Runtime environment has finished execution?
[英]how to get to know if a process invoked with process builder/ Runtime in Java has completed its execution or not
在Java中,我使用Process builder在shell上触发命令,在触发该命令后,我想知道它的完成与否。 如果调用的进程花费了太多时间,我想在一定的时间限制后杀死该进程。 例如,如果进程执行时间超过5秒,我想杀死该后端进程,如果在5秒内完成,我想继续使用该后端进程的输出。 在python中有一个名为returncode的类变量,它最初为null,然后在进程完成执行后变为0,我可以继续检查该值,如果5秒后它为null,我可以简单地杀死该进程。 我怎样才能在Java中做同样的事情?
方法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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.