From 3adaf8dba9970fdef22f49e3379b408c73719a48 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Mon, 7 Oct 2013 17:29:07 +0100
Subject: [PATCH] Reaping zombies properly

---
 build/main.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/build/main.c b/build/main.c
index 1a98b39fd..dd4f03ebf 100644
--- a/build/main.c
+++ b/build/main.c
@@ -78,11 +78,15 @@ static struct mg_context *ctx;      // Set by start_mongoose()
 #endif /* !CONFIG_FILE */
 
 static void WINCDECL signal_handler(int sig_num) {
+  // Reinstantiate signal handler
+  signal(sig_num, signal_handler);
+
 #if !defined(_WIN32)
   // Do not do the trick with ignoring SIGCHLD, cause not all OSes (e.g. QNX)
   // reap zombies if SIGCHLD is ignored. On QNX, for example, waitpid()
   // fails if SIGCHLD is ignored, making system() non-functional.
   if (sig_num == SIGCHLD) {
+    printf("dssfdsfds\n");
     do {} while (waitpid(-1, &sig_num, WNOHANG) > 0);
   } else
 #endif
@@ -383,6 +387,9 @@ static void start_mongoose(int argc, char *argv[]) {
   // Setup signal handler: quit on Ctrl-C
   signal(SIGTERM, signal_handler);
   signal(SIGINT, signal_handler);
+#ifndef _WIN32
+  signal(SIGCHLD, signal_handler);
+#endif
 
   // Start Mongoose
   ctx = mg_start((const char **) options, event_handler, NULL);
-- 
GitLab