如何执行系统命令?

我如何执行特定于系统的命令并在Clojure中获得响应? 例如,假设我们在一台Linux机器上,我怎样才能调用top或者free ,并获得进一步处理的结果?

 (use '[clojure.java.shell :only [sh]]) (sh "free") (sh "top" "-bn1") 

另见: http : //clojuredocs.org/clojure_core/clojure.java.shell/sh

您应该能够使用Java Runtime.exec方法,如下所示:

 (import 'java.lang.Runtime) (. (Runtime/getRuntime) exec "your-command-line-here") 

Runtime.exec方法返回一个Process对象,您可以根据需要查询以获取标准输出等。

如果你愿意抽象化一点(虽然没那么高),但我会推荐海螺 ,因为我发现它使得代码非常可读。