diff --git a/quark.c b/quark.c index 5ca7d34..4821033 100644 --- a/quark.c +++ b/quark.c @@ -909,7 +909,16 @@ sigcleanup(int sig) static void handlesignals(void(*hdl)(int)) { - signal(SIGINT, hdl); + struct sigaction sa; + + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_handler = hdl; + + sigaction(SIGTERM, &sa, NULL); + sigaction(SIGHUP, &sa, NULL); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGQUIT, &sa, NULL); } static int