diff --git a/build/main.c b/build/main.c index 1a98b39fd017be8f2053e3db1cf88e70fff0ca5f..dd4f03ebf03cc668e49004ef37f13f716b95bd9f 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);