繁体   English   中英

如何知道使用Java中的流程构建器/运行时调用的流程是否已完成其执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM