web-dev-qa-db-fra.com

Comment exécuter des commandes système?

Comment puis-je exécuter des commandes spécifiques au système et obtenir leur réponse dans le clojure? Par exemple, supposons que nous sommes sur une machine Linux, comment puis-je appeler top ou free et obtenir leurs résultats pour un traitement ultérieur?

51
sjac
(use '[clojure.Java.Shell :only [sh]])
(sh "free")
(sh "top" "-bn1")

Voir aussi: http://clojureocs.org/clojure_core/clojure.java.shell/sh

72
overthink

Vous devriez être capable d'utiliser le Java exécutant la méthode comme suit:

(import 'Java.lang.Runtime)

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

La méthode Runtime.Exec renvoie un objet A processus que vous pouvez interroger pour obtenir la sortie standard, etc. au besoin.

13
mikera

Si vous êtes prêt à obtenir un peu plus haut en termes d'abstractions (bien que non si élevé), je recommanderais ConCH , comme je l'ai trouvé de manière très lisible.

2
nha