clojure leiningen shutdown-hook clojure-java-interop

clojure - el gancho de apagado no se dispara cuando se ejecuta con "lein run"



leiningen shutdown-hook (1)

¿Has probado correr con trampolín?

lein trampoline run

Parece funcionar para mi.

AFAIK "lein trampoline" no anida la JVM, por lo que su Ctrl-C no es atrapada por leiningen, sino por su código.

Tengo el siguiente código:

(ns test-hook.core) (defn -main [] (.addShutdownHook (Runtime/getRuntime) (Thread. #(println "shutdown"))) (println "start") (doseq [i (range 1 6)] (Thread/sleep 1000) (println i)))

y el siguiente proyecto.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"]])

cuando lo ejecuto con "lein run", el gancho de apagado solo se ejecuta en la ejecución normal del programa, no cuando se recibe SIGINT (Ctrl-C)

el mismo código cuando se ejecuta fuera de lein ejecuta con éxito el gancho de apagado incluso cuando se recibe SIGINT.

¿Cómo puedo hacer que el gancho de apagado se ejecute cuando se ejecuta desde lein y se cancela con Ctrl-C?