在Clojure程序中,你如何從標準中讀出讀取?我想這樣做,或者將標準輸出傳輸到我創建的輸入流。 Clojure中的標準輸出是java.io.PrintWriter。Clojure可以從現有流程中捕捉標準嗎?
我有一個Samza工作,由Clojure程序開始。還有一個我可以遠程連接的nrepl服務器。連接之後,我需要能夠進入並尾出標準輸出(將作業寫入輸出)。
1)按本SO question,with-out-str
(見here)讓我們暫時結合*out*
(到java.io.StringWriter中),讓你執行的代碼寫入到一個字符串。但這並不能讓我進入現有的*out*
。
2)如果你看一下clojure.java.shell(見here),它得到了JVM的運行和exec是它的過程。從這個過程中,你可以得到它的標準輸出流。但是,這不是我正在尋找的默認標準(*out*
)。
3)這SO question接近我想要做的。但是,我再次連接到一個現有的流程,並希望終止其標準輸出。
這在Clojure中可能嗎(請參閱here)?有沒有人解決這個問題
在Linux上,您可以從'/ proc/{pid}/fd/1'讀取該文件,該文件是該進程的標準輸出。同樣'/ proc/{pid}/fd/2'是stderr。 –
你的意思是說你想將流程的輸出流入clojure流程,比如'ls | my-clj'並讓my-clj讀取ls的輸出?如果是這樣,只需使用http://stackoverflow.com/questions/18688755/reading-characters-from-stdin –
@AnnThompson不,我正在遠程連接到一個已經運行的進程中的repl。一旦連接,我想*「尾巴」*標準輸出。 – Nutritioustim