Enable SIGQUIT in child processes.
authorDavin McCall <davmac@davmac.org>
Thu, 8 Jun 2017 20:56:32 +0000 (21:56 +0100)
committerDavin McCall <davmac@davmac.org>
Thu, 8 Jun 2017 20:56:32 +0000 (21:56 +0100)
src/dinit.cc
src/service.cc

index 282d4b157750a2f1bb70047ab8a0b94914487dba..831e2ae88f419f5a4b1a927e923595e24e09766e 100644 (file)
@@ -237,6 +237,7 @@ static int dinit_main(int argc, char **argv)
     sigaddset(&sigwait_set, SIGCHLD);
     sigaddset(&sigwait_set, SIGINT);
     sigaddset(&sigwait_set, SIGTERM);
+    if (am_system_init) sigaddset(&sigwait_set, SIGQUIT);
     sigprocmask(SIG_BLOCK, &sigwait_set, NULL);
     
     // Terminal access control signals - we block these so that dinit can't be
index 8595a3329efb6ab2b7d1fe38023d349c6726ce90..1ce35c83d6168e088988ea674717cae835ed7598 100644 (file)
@@ -893,6 +893,7 @@ void ServiceRecord::run_child_proc(const char * const *args, const char *logfile
     sigdelset(&sigwait_set, SIGCHLD);
     sigdelset(&sigwait_set, SIGINT);
     sigdelset(&sigwait_set, SIGTERM);
+    sigdelset(&sigwait_set, SIGQUIT);
     
     constexpr int bufsz = ((CHAR_BIT * sizeof(pid_t)) / 3 + 2) + 11;
     // "LISTEN_PID=" - 11 characters; the expression above gives a conservative estimate