1

他のcmdラッパーと同じように、cmdアプリケーションのストリームをインターセプトするcmdラッパーを作成しています。これまでのところ、私は成功しており、ほとんどのアプリは「ping」などのように正常に動作します. しかし、Clojure や Scala の REPL を起動すると、最初は問題なく動作しますが、複数行の関数を入力したり、エラーが発生したりすると、何かがパイプに詰まっているかのようにメッセージが停止します。REPL とラッパーの間のすべての通信が停止します。ラッパーを介して起動するすべてのアプリの stdout ストリームと stderr ストリームの両方をチャネルするため、この状況で何をすべきかがわかりません。出力が傍受されないのはなぜですか?

更新:新しい情報がユーザー om-nom-nom によって提案されました。これは、Scala と Clojure REPL が高度なコンソール操作の処理に jline を使用していることを明らかにしています。したがって、これはいくつかの新しい疑問を提起します: jline での作業が標準ストリームと異なるのはなぜですか? 通常のストリームと同様の方法で jline ストリームを再ルーティングする方法はありますか? そのようにjlineを操作する最良の方法は何ですか?

4

1 に答える 1

0

お勧めします: https://github.com/Raynes/conch、Clojure でシェルを実行するためのシンプルで柔軟なライブラリ

于 2012-03-28T06:36:20.510 に答える