Sam*_*us_ 17 clojure leiningen shutdown-hook clojure-java-interop
我有以下代码:
(ns test-hook.core)
(defn -main []
(.addShutdownHook (Runtime/getRuntime) (Thread. #(println "shutdown")))
(println "start")
(doseq [i (range 1 6)]
(Thread/sleep 1000)
(println i)))
Run Code Online (Sandbox Code Playgroud)
以及project.clj
(defproject test-hook "1.0.0-SNAPSHOT"
:aot :all
:main test-hook.core
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.0"]])
Run Code Online (Sandbox Code Playgroud)
当我使用"lein run"运行它时,关闭钩子仅在正常程序执行时执行,而不是在接收SIGINT时执行(Ctrl-C)
在lein外部运行时相同的代码即使在接收到SIGINT时也会成功执行shutdown hook.
如何从lein运行并使用Ctrl-C中止时执行关闭挂钩?
小智 25
你试过用蹦床运行吗?
lein trampoline run
Run Code Online (Sandbox Code Playgroud)
似乎为我工作.
AFAIK"lein trampoline"没有嵌套JVM,所以你的Ctrl-C不是由leiningen捕获的,而是由你的代码捕获的.