X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Ftint.c;h=4f5c67372f18132a3f27b4f7c51e33001176888b;hb=57e492324769f892335ef6b20dd747f39fc00b71;hp=8316bdde59a56f8a0fb841731f72391b2fce2d00;hpb=45d86ccff78c7281ab511833eaa4c0d5a5a9cf9a;p=chaz%2Ftint2 diff --git a/src/tint.c b/src/tint.c index 8316bdd..4f5c673 100644 --- a/src/tint.c +++ b/src/tint.c @@ -91,11 +91,12 @@ void init (int argc, char *argv[]) // Set signal handler signal_pending = 0; struct sigaction sa = { .sa_handler = signal_handler }; + struct sigaction sa_chld = { .sa_handler = SIG_DFL, .sa_flags = SA_NOCLDWAIT }; sigaction(SIGUSR1, &sa, 0); sigaction(SIGINT, &sa, 0); sigaction(SIGTERM, &sa, 0); sigaction(SIGHUP, &sa, 0); -// signal(SIGCHLD, SIG_IGN); // don't have to wait() after fork() + sigaction(SIGCHLD, &sa_chld, 0); // BSD does not support pselect(), therefore we have to use select and hope that we do not // end up in a race condition there (see 'man select()' on a linux machine for more information)