From 2cfa02d9b350df0957d68037586915917978f2a7 Mon Sep 17 00:00:00 2001 From: Luke Smith Date: Tue, 28 Feb 2023 18:25:53 -0500 Subject: revert 712d6639ff8e863560328131bbb92b248dc9cde7 --- dwm.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'dwm.c') diff --git a/dwm.c b/dwm.c index df45a64..3c0afbf 100644 --- a/dwm.c +++ b/dwm.c @@ -259,6 +259,7 @@ static void setmfact(const Arg *arg); static void setup(void); static void seturgent(Client *c, int urg); static void showhide(Client *c); +static void sigchld(int unused); #ifndef __OpenBSD__ static int getdwmblockspid(); static void sigdwmblocks(const Arg *arg); @@ -1855,16 +1856,9 @@ setup(void) int i; XSetWindowAttributes wa; Atom utf8string; - struct sigaction sa; - /* do not transform children into zombies when they terminate */ - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT | SA_RESTART; - sa.sa_handler = SIG_IGN; - sigaction(SIGCHLD, &sa, NULL); - - /* clean up any zombies (inherited from .xinitrc etc) immediately */ - while (waitpid(-1, NULL, WNOHANG) > 0); + /* clean up any zombies immediately */ + sigchld(0); signal(SIGHUP, sighup); signal(SIGTERM, sigterm); @@ -1999,6 +1993,14 @@ sigdwmblocks(const Arg *arg) } #endif +void +sigchld(int unused) +{ + if (signal(SIGCHLD, sigchld) == SIG_ERR) + die("can't install SIGCHLD handler:"); + while (0 < waitpid(-1, NULL, WNOHANG)); +} + void spawn(const Arg *arg) { -- cgit v1.2.3