Scala:捕获交互式外部过程的标准输出/标准错误

时间:2018-06-26 15:02:57

标签: scala process stdout

我正在尝试从需要用户输入的外部进程中捕获stdout和stderr流。到目前为止,我一直致力于使用scala.sys.process软件包中提供的工具。我可以使用户交互捕获正常工作,但不能同时工作。我添加了一个简单的测试用例,其中包含两种行为的示例。我怀疑我没有正确连接输入/输出流,但是我有点迷茫。

import scala.sys.process._

object Test extends App {
  val processLogger = ProcessLogger(
    (out: String) => println(s"OUT: $out"),
    (err: String) => println(s"ERR: $err")
  )

  val cmd = "sbt new scala/scala-seed.g8"

  // Allows user interaction but doesn't allow capture of stdout/stderr
  val exitCode1 = cmd.run(connectInput = true).exitValue() 

  // Allows stdout/stderr capture but user input prompt is not displayed
  val exitCode2 = cmd.run(processLogger, connectInput = true).exitValue() 
}

0 个答案:

没有答案