7
Clojureで端末からスイングではなく1回のキーストロークを読み取るにはどうすればよいですか?Clojureでバッファリングされていないキーボード入力を読み取る
私はJLineライブラリのvariousversionsを含むいくつかのことを試しましたが、動作していません(下記の例を参照)。
私はうれしいことに、Unix専用(Mac、Linux、...)の例を受け入れます。理想的には、stdinとstdoutの両方のバッファリングをオフに切り替える方法を知りたいです。これは、「スタート」が、制御-Cを除くすべての入力に応答しない出力します
;; project.clj dependencies:
;; [[org.clojure/clojure "1.4.0"]
;; [jline/jline "2.8"]])
(ns slosh.core
(:import [jline.console ConsoleReader])
(:gen-class))
(defn -main []
(println "start")
(let [cr (ConsoleReader.)]
(.readCharacter cr)
(println "done")))
:
はここに近いものです。
überjarから走っているように、 'lein trampoline run'が実際に動作します。 1つの作品がなぜ作品になるのか、他の作品ではないのか? – JohnJ
'lein run'で使われる' sh'関数は 'out'と' err'をサブプロセスとして実行します(https://github.com/technomancy/leiningen/blob/master/leiningen-coreを参照)。 /src/leiningen/core/eval.clj#L155)。 'trampoline'は、プロジェクトが' in'、 'out'、' err'をシェルと結びつけて独立したプロセスとして実行されます。 – johnwayner
素晴らしいです、ありがとう! – JohnJ