[英]Running an external program from python: piping without waiting for all 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
。
編輯:澄清之前
您可以使用 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.