【发布时间】:2016-07-19 17:55:47
【问题描述】:
使用 clojure.java.shell/sh 可以执行 shell 命令。调用的进程完成后,该函数返回一个包含其退出代码、std-out 和 std-err 字符串的映射。
如何从生成的进程开始时捕获其 stdout/-err?并且:如何从 clojure 程序/repl 中终止进程?
【问题讨论】:
使用 clojure.java.shell/sh 可以执行 shell 命令。调用的进程完成后,该函数返回一个包含其退出代码、std-out 和 std-err 字符串的映射。
如何从生成的进程开始时捕获其 stdout/-err?并且:如何从 clojure 程序/repl 中终止进程?
【问题讨论】:
据我所知,clojure.java.shell/sh 是不可能的。你可以看看Raynes/conch,它提供了features you ask for(启动后立即获得输出等)
您还可以使用java.lang.ProcessBuilder 和java.lang.Process 进行DIY,您可以完全访问process's input stream 或a method to terminate it。
【讨论】:
ProcessBuilder and Process examples,包括从单独的线程中读取进程标准输出。您可以轻松地将其适应 Clojure。