From 44358dfbaa66592da813ce84e88675dfa293384f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 16 Jan 2003 23:38:21 +0000 Subject: [PATCH] reap child processes when they die --- src/openbox.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/openbox.cc b/src/openbox.cc index d599e7bf..49849ea9 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -43,6 +43,10 @@ extern "C" { # include #endif // HAVE_SYS_SELECT_H +#ifdef HAVE_SYS_WAIT_H +# include +#endif // HAVE_SYS_WAIT_H + #include "gettext.h" #define _(str) gettext(str) } @@ -62,6 +66,10 @@ void Openbox::signalHandler(int signal) openbox->restart(); break; + case SIGCLD: + wait(NULL); + break; + case SIGHUP: case SIGINT: case SIGTERM: @@ -113,6 +121,10 @@ Openbox::Openbox(int argc, char **argv) sigaction(SIGTERM, &action, (struct sigaction *) 0); sigaction(SIGINT, &action, (struct sigaction *) 0); sigaction(SIGHUP, &action, (struct sigaction *) 0); + sigaction(SIGCLD, &action, (struct sigaction *) 0); + + // anything that died while we were restarting won't give us a SIGCLD + while (waitpid(-1, NULL, WNOHANG) > 0); otk::Timer::initialize(); otk::Property::initialize(); -- 2.45.2