Ответ 1
Вы пытались запустить его с батутом?
lein trampoline run
Кажется, работает для меня.
AFAIK "lein trampoline" не встраивает JVM, поэтому ваш Ctrl-C не пойман leiningen, а вашим кодом.
У меня есть следующий код:
(ns test-hook.core)
(defn -main []
(.addShutdownHook (Runtime/getRuntime) (Thread. #(println "shutdown")))
(println "start")
(doseq [i (range 1 6)]
(Thread/sleep 1000)
(println i)))
и следующий проект .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", завершающий крючок запускается только при обычном выполнении программы, а не при получении SIGINT (Ctrl-C)
тот же самый код, который был запущен за пределами lein, успешно выполняет завершающий захват даже при получении SIGINT.
как я могу сделать крюк завершения работы при запуске с lein и прервать с помощью Ctrl-C?
Вы пытались запустить его с батутом?
lein trampoline run
Кажется, работает для меня.
AFAIK "lein trampoline" не встраивает JVM, поэтому ваш Ctrl-C не пойман leiningen, а вашим кодом.