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

ric*_*hid 5 scala stdout process

我正在尝试从需要用户输入的外部进程中捕获 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() 
}
Run Code Online (Sandbox Code Playgroud)