簡體   English   中英

clojure — 如何在沒有管道的情況下運行程序 output?

[英]clojure — how to run a program without piping it's output?

I want to use something like shell-out [ http://richhickey.github.com/clojure-contrib/shell-out-api.html ], but without capturing the any output. 當然可以將 output 傳遞給打印,但這有點不太理想(例如,在子進程可能失敗的情況下)。

編輯

對不起,我希望 output 的子進程與父進程相同的stdout

另請參閱此第三方庫

https://github.com/Raynes/conch

它提供對流的直接訪問。

編輯:澄清之前

您可以使用 sh 將 shell 命令包裝,然后將 pipe 包裝到 /dev/null ,如下所示:

 (clojure.java.shell/sh "sh" "-c" "echo hello > /dev/null")
 ;; {:exit 0, :out "", :err ""}

這將使 output 在到達 clojure 之前靜音。

編輯:澄清后

只要 output 足夠快地出來,通過 output 和 stderr 打印應該可以工作。 如果您想要具有連續 output 錯誤消息和標准 output 的東西,查看“sh” function 的來源應該會有所幫助。

Personally, I would make my own version of clojure.java.shell/sh and for each stream, create a thread that pipes the output directly to out using something like IOUtils.copy from org.apache.commons.io.IOUtilsin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM