From ad5d5a9390bd9476e14bdf7d19d1e555d6cd846f Mon Sep 17 00:00:00 2001 From: Bastien Dejean Date: Wed, 1 Jan 2014 10:36:01 +0100 Subject: [PATCH] Handle SIG{INT,HUP,TERM} signals --- bspwm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bspwm.c b/bspwm.c index 9717aa6..95049ae 100644 --- a/bspwm.c +++ b/bspwm.c @@ -116,6 +116,9 @@ int main(int argc, char *argv[]) if (listen(sock_fd, SOMAXCONN) == -1) err("Couldn't listen to the socket.\n"); + signal(SIGINT, sig_handler); + signal(SIGHUP, sig_handler); + signal(SIGTERM, sig_handler); signal(SIGCHLD, sig_handler); signal(SIGPIPE, SIG_IGN); load_settings(); @@ -343,8 +346,11 @@ void put_status(void) void sig_handler(int sig) { - signal(sig, sig_handler); - if (sig == SIGCHLD) + if (sig == SIGCHLD) { + signal(sig, sig_handler); while (waitpid(-1, 0, WNOHANG) > 0) ; + } else if (sig == SIGINT || sig == SIGHUP || sig == SIGTERM) { + running = false; + } }