Выключение при запуске с "lein run"

У меня есть следующий код:

(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?

Ответы

Ответ 1

Вы пытались запустить его с батутом?

lein trampoline run

Кажется, работает для меня.

AFAIK "lein trampoline" не встраивает JVM, поэтому ваш Ctrl-C не пойман leiningen, а вашим кодом.