我正在尝试使用来自clojure.java.shell的sh。在REPL
中,它工作正常,但是从脚本中,它会卡住。
(ns tutorial.shell
(:use clojure.java.shell))
(println (:out (sh "ls" )))
我应该修理什么?
答案 0 :(得分:8)
问题在于sh
使用期货和Clojure程序使用期货或代理商在退出之前会因为某些内部机制的工作原因而无法做更多的工作时暂停。
要解决此问题,请添加
(shutdown-agents)
在脚本的末尾,终止那个机器。 (因此它的名称承诺超过了期货也会受到影响。)
请注意,这不能撤消,因此不应在REPL中使用。