次のコードがあります。
(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」で実行すると、シャットダウンフックは通常のプログラム実行時にのみ実行され、SIGINT (Ctrl-C) を受信したときは実行されません。
lein の外で実行された同じコードは、SIGINT を受信した場合でも、シャットダウン フックを正常に実行します。
lein から実行して Ctrl-C で中止するときに、シャットダウン フックを実行するにはどうすればよいですか?