diff options
Diffstat (limited to '')
-rw-r--r-- | src/trap.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/trap.c b/src/trap.c index 58cd0cc..53663ae 100644 --- a/src/trap.c +++ b/src/trap.c @@ -71,7 +71,7 @@ /* trap handler commands */ char *trap[NSIG]; /* current value of signal */ -static char sigmode[NSIG - 1]; +char sigmode[NSIG - 1]; /* indicates specified signal received */ char gotsig[NSIG - 1]; /* last pending signal */ @@ -82,9 +82,10 @@ int exsig; extern char *signal_names[]; #ifdef mkinit -INCLUDE <signal.h> +INCLUDE "trap.h" INIT { - signal(SIGCHLD, SIG_DFL); + sigmode[SIGCHLD - 1] = S_DFL; + setsignal(SIGCHLD); } #endif @@ -207,6 +208,9 @@ setsignal(int signo) } } + if (signo == SIGCHLD) + action = S_CATCH; + t = &sigmode[signo - 1]; tsig = *t; if (tsig == 0) { |