我正在编写一个 cmd 包装器,它应该像任何其他 cmd 包装器一样拦截任何 cmd 应用程序的流。到目前为止,我已经成功并且大多数应用程序都可以正常工作,例如“ping”等。但是,当我启动 Clojure 或 Scala REPLs 时,起初一切正常,但是当我输入多行函数或出现错误时,消息会停止,就像管道中卡住了一样。REPL 和我的包装器之间的任何通信都会停止。由于我通过包装器启动了我启动的所有应用程序的 stdout 和 stderr 流,我不清楚在这种情况下该怎么做,为什么输出没有被截获?
更新:用户 om-nom-nom 提出了一条新信息,该信息表明 Scala 和 Clojure REPL 正在使用 jline 进行高级控制台交互处理。所以这提出了几个新问题:为什么使用 jline 与使用标准流不同?有没有办法以类似于普通流的方式重新路由 jline 流?像这样使用 jline 的最佳方式是什么?