From cbe0f0cbe66f4e9b4e15429f75ae57b90b939860 Mon Sep 17 00:00:00 2001 From: buffet Date: Sun, 30 Sep 2018 20:06:21 +0200 Subject: [PATCH] Added signal handling --- lit/wmaffle.lit | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/lit/wmaffle.lit b/lit/wmaffle.lit index 02f409c..5362e94 100644 --- a/lit/wmaffle.lit +++ b/lit/wmaffle.lit @@ -29,6 +29,7 @@ main(int argc, char *argv[]) @{parse arguments} @{open ipc connection} + @{setup signal handlers} } --- @@ -215,3 +216,41 @@ if (sock_path) { strncpy(sock_addr.sun_path, "/tmp/wmaffle.sock", sizeof(sock_addr.sun_path)); } --- + +@s Setup signal handlers + +We don't want out window manager to just exit on us, so we need to setup signal handler. + +Here is it: + +--- function definitions += +static void +sig_handler(int sig) +{ + if (sig == SIGCHLD) { + signal(sig, sig_handler); + while (waitpid(-1, 0, WNOHANG) > 0) { + // EMPTY + } + } else if (sig == SIGINT || sig == SIGHUP || sig == SIGTERM) { + // TODO: Set about to quit to 1 + } +} +--- + +Now we only need to register it. + +--- setup signal handlers +signal(SIGINT, sig_handler); +signal(SIGHUP, sig_handler); +signal(SIGTERM, sig_handler); +signal(SIGCHLD, sig_handler); +signal(SIGPIPE, SIG_IGN); +--- + +Which of course requires this. + +--- posix headers += +#include +#include +---