reap child processes when they die
This commit is contained in:
parent
af1ac846cc
commit
44358dfbaa
1 changed files with 12 additions and 0 deletions
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue