reap child processes when they die

This commit is contained in:
Dana Jansens 2003-01-16 23:38:21 +00:00
parent af1ac846cc
commit 44358dfbaa

View file

@ -43,6 +43,10 @@ extern "C" {
# include <sys/select.h>
#endif // HAVE_SYS_SELECT_H
#ifdef HAVE_SYS_WAIT_H
# include <sys/wait.h>
#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();