summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zwgc/main.c11
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. */