从Scala中杀死一个悬挂的进程

时间:2011-04-21 09:53:31

标签: scala process

我的代码必须调用一些有时挂起的外部程序。 (无限循环,永远不会回来)

要启动外部流程我使用:

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

但是我找不到检查进程是否仍在运行的方法。或者等待(时间)让我只等一段时间。

我相信他们应该是一个简单的解决方案,但我无法找到它......

1 个答案:

答案 0 :(得分:3)

据我所知,exitValue中的方法Process被定义为以下内容:

def exitValue(): Option[Int] =
    catching(classOf[IllegalThreadStateException]) opt process.exitValue()

因此,您可以检查exitValue()是否返回NoneSome值。 None表示进程仍在运行。它来自documentation to Java Process.exitValue()