Как я могу выполнить команды, специфичные для системы, и получить их ответ в Clojure? Например, допустим, что мы находимся на машине Linux, как я могу вызвать top
или free
, и получить их результаты для дальнейшей обработки?
Как выполнять системные команды?
Ответ 1
(use '[clojure.java.shell :only [sh]])
(sh "free")
(sh "top" "-bn1")
Смотрите также: http://clojuredocs.org/clojure_core/clojure.java.shell/sh
Ответ 2
Вы можете использовать метод Java Runtime.exec следующим образом:
(import 'java.lang.Runtime)
(. (Runtime/getRuntime) exec "your-command-line-here")
Метод Runtime.exec возвращает объект Process, который можно запросить для получения стандартного вывода и т.д. по мере необходимости.
Ответ 3
Если вы хотите получить немного больше в терминах абстракций (хотя и не так высоко), я бы рекомендовал Conch, так как Я нашел, что он делает очень читаемый код.