在clojure中,sh被卡住了

vie*_*bel 5 clojure

我想从clojure.java.shell使用sh .在它REPL,它工作正常,但从脚本,它被卡住了.

(ns tutorial.shell
(:use clojure.java.shell))
   (println (:out (sh "ls" )))
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Mic*_*zyk 9

问题是sh使用期货和Clojure程序使用期货或代理商在退出之前会因为一些内部机制如何工作而无所事事.

要解决这个问题,请添加

(shutdown-agents)
Run Code Online (Sandbox Code Playgroud)

在脚本的末尾,它终止了那个机器.(因此它的名称承诺不仅仅是因为期货也会受到影响.)

请注意,这不能撤消,因此不应在REPL中使用.