早些时候我跑了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 )
}
答案 0 :(得分:2)
您可以通过将ProcesLogger
传递给run方法来获取正在运行的进程的所有std输出:
e.g。
val logger = ProcessLogger((msg: String) ⇒ println(msg))
val x = pb.run(logger)
将所有输出打印到System.out。 - 但是您可以传递一个函数来解析和评估流程的输出,以提取对您的应用程序有意义的某种状态。您还可以为标准和错误输出传递不同的函数。看看ProcessLogger.apply
变体。