我有以下代码:
(ns test-hook.core)
(defn -main []
(.addShutdownHook (Runtime/getRuntime) (Thread. #(println "shutdown")))
(println "start")
(doseq [i (range 1 6)]
(Thread/sleep 1000)
(println i)))和下面的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"]])当我使用"lein run“运行它时,shutdown钩子只在正常的程序执行时执行,而不是在收到SIGINT (Ctrl-C)时执行。
相同的代码在lein之外运行时,即使在接收到SIGINT时也能成功执行关闭钩子。
从lein运行并使用Ctrl-C中止时,如何执行shutdown钩子?
发布于 2012-06-03 00:16:25
你有没有试过用弹床跑步?
lein trampoline run看起来对我很管用。
AFAIK "lein trampoline“不嵌套JVM,因此您的Ctrl-C不会被leiningen捕获,而是被您的代码捕获。
https://stackoverflow.com/questions/10855559
复制相似问题