summaryrefslogtreecommitdiff
path: root/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/signal.c b/signal.c
index 6bca945..1c3f812 100644
--- a/signal.c
+++ b/signal.c
@@ -19,7 +19,7 @@ extern void catcher(int s) {
}
signal(s, catcher);
interrupt_happened = TRUE;
-#ifndef SVSIGS
+#ifndef HAVE_RESTARTABLE_SYSCALLS
if (slow)
longjmp(slowbuf.j, 1);
#endif
@@ -70,4 +70,11 @@ extern void initsignal() {
signal(i, h);
sighandlers[i] = h;
}
+
+#ifdef SIGCLD
+ /* Ensure that SIGCLD is not SIG_IGN. Solaris's rshd does this. :-( */
+ h = signal(SIGCLD, SIG_DFL);
+ if (h != SIG_IGN)
+ signal(SIGCLD, h);
+#endif
}