summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--manager.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/manager.c b/manager.c
index 36733b0eb5..e7c66099a4 100644
--- a/manager.c
+++ b/manager.c
@@ -72,9 +72,16 @@ static int enable_special_signals(Manager *m) {
static int manager_setup_signals(Manager *m) {
sigset_t mask;
struct epoll_event ev;
+ struct sigaction sa;
assert(m);
+ /* We are not interested in SIGSTOP and friends. */
+ zero(sa);
+ sa.sa_handler = SIG_DFL;
+ sa.sa_flags = SA_NOCLDSTOP|SA_RESTART;
+ assert_se(sigaction(SIGCHLD, &sa, NULL) == 0);
+
assert_se(sigemptyset(&mask) == 0);
assert_se(sigaddset(&mask, SIGCHLD) == 0);
assert_se(sigaddset(&mask, SIGINT) == 0); /* Kernel sends us this on control-alt-del */