如何执行系统命令?
我如何执行特定于系统的命令并在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对象,您可以根据需要查询以获取标准输出等。
如果你愿意抽象化一点(虽然没那么高),但我会推荐海螺 ,因为我发现它使得代码非常可读。