如何在Scala中获取正在运行的进程的状态

时间:2015-09-24 07:54:51

标签: scala

早些时候我跑了val pb = Process("""java -version""")并且它按预期给了我一个0的exitValue,但是下面的代码在没有退出或阻塞的情况下运行进程,所以如何获得exitValue,我的要求实际上是如何获取状态在不停止的情况下在后台运行的进程。

object Sample extends App {

  import scala.sys.process.Process

  val pb = Process("""java -jar common-api_2.11-1.3-one-jar.jar""")

  val x = pb.run

  print( "Exit value :" + x.exitValue )
}

1 个答案:

答案 0 :(得分:2)

您可以通过将ProcesLogger传递给run方法来获取正在运行的进程的所有std输出:

e.g。

val logger = ProcessLogger((msg: String) ⇒ println(msg))
val x = pb.run(logger)

将所有输出打印到System.out。 - 但是您可以传递一个函数来解析和评估流程的输出,以提取对您的应用程序有意义的某种状态。您还可以为标准和错误输出传递不同的函数。看看ProcessLogger.apply变体。

相关问题