diff options
-rw-r--r-- | zwgc/main.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/zwgc/main.c b/zwgc/main.c index 2a66d59..f529664 100644 --- a/zwgc/main.c +++ b/zwgc/main.c @@ -399,11 +399,16 @@ static void setup_signals(dofork) sigaction(SIGTERM, &sa, (struct sigaction *)0); sigaction(SIGHUP, &sa, (struct sigaction *)0); - sa.sa_handler = signal_child; - sigaction(SIGCHLD, &sa, (struct sigaction *)0); - sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, (struct sigaction *)0); + +#ifdef SOLARIS + sa.sa_handler = SIG_IGN; + sa.sa_flags = SA_NOCLDSTOP; +#else + sa.sa_handler = signal_child; +#endif + sigaction(SIGCHLD, &sa, (struct sigaction *)0); #else if (dofork) { /* Ignore keyboard signals if forking. Bad things will happen. */ |