signal: UNIX signal handlers in clojure
This is just a bit of code I end up copying through-out my projects. This projects bring one macro and one function of interest.
Pull-in the following dependency:
The main signatures:
(on-signal signal handler): Execute handler (a function of one argument, the signal keyword).
(with-handler signal & body): Handle signal by calling the body of forms supplied.
A few additional signatures may come in handy:
(->signal signal): Convert a signal keyword or string to a
(signal->number signal): Show the number for a signal.
(signal->kw signal): Convert a
sun.misc.Signalinstance to a keyword.
(->handler f): Convert a function of one argument to a
Using with component
Here's one way of hooking this up with a component system:
(with-handler :term (info "caught SIGTERM, quitting.") (alter-var-root #'system component/stop-system) (System/exit 0)) (with-handler :hup (info "caught SIGHUP, reloading.") (alter-var-root #'system (comp component/start-system component/stop-system)))
Copyright © 2016 Pierre-Yves Ritschard email@example.com