Как выполнять системные команды? - PullRequest
50 голосов
/ 18 июля 2011

Как я могу выполнить системные команды и получить их ответ в Clojure? Например, предположим, что мы находимся на компьютере с Linux, как я могу позвонить top или free и получить их результаты для дальнейшей обработки?

Ответы [ 3 ]

71 голосов
/ 18 июля 2011
(use '[clojure.java.shell :only [sh]])
(sh "free")
(sh "top" "-bn1")

Смотри также: http://clojuredocs.org/clojure_core/clojure.java.shell/sh

12 голосов
/ 18 июля 2011

Вы можете использовать метод Java Runtime.exec следующим образом:

(import 'java.lang.Runtime)

(. (Runtime/getRuntime) exec "your-command-line-here")

Метод Runtime.exec возвращает объект Process , который можно запросить, чтобы получить стандартвывод и т. д. при необходимости.

2 голосов
/ 10 сентября 2015

Если вы хотите получить немного более высокий уровень абстракций (хотя и не такой высокий), я бы порекомендовал Conch , поскольку я нашел, что он делает очень читаемый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...