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