summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Powell <djpowell@djpowell.net>2010-07-13 23:43:20 +0100
committerStuart Halloway <stu@thinkrelevance.com>2010-07-27 16:50:35 -0400
commit1f6834c3d8cf001c6bb4d52ab4221855989d7e8a (patch)
treeff5939ad80bd1b94b4d696b8ca4ef302dea931b5
parentbefba000e922dc261e8a23a826505847c2d4d01c (diff)
read stdout and stderr in parallel (using futures)
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
-rw-r--r--src/clj/clojure/java/shell.clj6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/clj/clojure/java/shell.clj b/src/clj/clojure/java/shell.clj
index 72f0311b..fa553671 100644
--- a/src/clj/clojure/java/shell.clj
+++ b/src/clj/clojure/java/shell.clj
@@ -124,10 +124,10 @@ collecting its stdout"}
(.close (.getOutputStream proc)))
(with-open [stdout (.getInputStream proc)
stderr (.getErrorStream proc)]
- (let [out (stream-to-enc stdout out-enc)
- err (stream-to-string stderr)
+ (let [out (future (stream-to-enc stdout out-enc))
+ err (future (stream-to-string stderr))
exit-code (.waitFor proc)]
- {:exit exit-code :out out :err err}))))
+ {:exit exit-code :out @out :err @err}))))
(comment