我的代码必须调用一些有时挂起的外部程序。 (无限循环,永远不会回来)
要启动外部流程我使用:
import tools.nsc.io.Process
val res = Process("ls")
res.foreach(println)
res.waitFor // waits until a Process is finished but if it's hanging waitFor will not return or
res.destroy // kills a process
但是我找不到检查进程是否仍在运行的方法。或者等待(时间)让我只等一段时间。
我相信他们应该是一个简单的解决方案,但我无法找到它......
答案 0 :(得分:3)
据我所知,exitValue
中的方法Process
被定义为以下内容:
def exitValue(): Option[Int] =
catching(classOf[IllegalThreadStateException]) opt process.exitValue()
因此,您可以检查exitValue()
是否返回None
或Some
值。 None
表示进程仍在运行。它来自documentation to Java Process.exitValue()