2012-02-20 7 views
5

अटक गया है मैं clojure.java.shell से sh का उपयोग करने की कोशिश कर रहा हूं। REPL में, यह ठीक काम करता है लेकिन एक स्क्रिप्ट से, यह अटक जाता है।क्लोजर में, sh

(ns tutorial.shell 
(:use clojure.java.shell)) 
    (println (:out (sh "ls"))) 

मुझे क्या ठीक करना चाहिए?

उत्तर

7

समस्या यह है कि sh वायदा और क्लोजर प्रोग्राम का उपयोग करता है जो वायदा या एजेंट का उपयोग करने से पहले थोड़ा सा लटकाते हैं, जब कुछ आंतरिक मशीनरी कैसे काम करती है, इसके कारण उनके पास कुछ और नहीं होता है।

इस के आसपास पाने के लिए, अपनी स्क्रिप्ट है, जो मशीनरी के उस टुकड़े को समाप्त कर देता के अंत में

(shutdown-agents) 

जोड़ें। (इसलिए यह वायदा में नाम के वादे से भी अधिक है।)

ध्यान दें कि इसे पूर्ववत नहीं किया जा सकता है और इसलिए आरईपीएल में इसका उपयोग नहीं किया जाना चाहिए।