Ver Fonte

Issue #5: Changed reaping policy to not ignore SIGCHLD

Thomas Davis há 12 anos atrás
pai
commit
7bf94e2529
1 ficheiros alterados com 6 adições e 2 exclusões
  1. 6 2
      civetweb.c

+ 6 - 2
civetweb.c

@@ -3322,6 +3322,12 @@ static void handle_cgi_request(struct mg_connection *conn, const char *prog) {
 done:
   if (pid != (pid_t) -1) {
     kill(pid, SIGKILL);
+#if !defined(_WIN32)
+    {
+        int st;
+        while (waitpid(pid, &st, 0) != -1);  // clean zombies
+    }
+#endif
   }
   if (fdin[0] != -1) {
     close(fdin[0]);
@@ -5261,8 +5267,6 @@ struct mg_context *mg_start(const struct mg_callbacks *callbacks,
   // Ignore SIGPIPE signal, so if browser cancels the request, it
   // won't kill the whole process.
   (void) signal(SIGPIPE, SIG_IGN);
-  // Also ignoring SIGCHLD to let the OS to reap zombies properly.
-  (void) signal(SIGCHLD, SIG_IGN);
 #endif // !_WIN32
 
   (void) pthread_mutex_init(&ctx->mutex, NULL);