commit a1c232cd01d5cdefe98b5cc36304114a6874fb3b from: Caleb Stein date: Wed May 13 09:08:33 2026 UTC add SIGCHLD handler commit - b246ebb01fd779208a9c53c20075fc8a94334f96 commit + a1c232cd01d5cdefe98b5cc36304114a6874fb3b blob - 71870f738fd5a6c106721b79c3acfde3104c70dc blob + 6181d1bb7c8f9ca62d555a8ea2a4d641a4f069ec --- src/main.c +++ src/main.c @@ -12,6 +12,7 @@ #include #include #include +#include #include @@ -207,6 +208,8 @@ read_config( void sig_handler(int sig) { + int saved_errno = errno; + switch (sig) { case SIGTERM: @@ -216,6 +219,9 @@ sig_handler(int sig) case SIGHUP: reload_config = 1; break; + case SIGCHLD: + while (waitpid(-1, NULL, WNOHANG) > 0); + break; case SIGUSR1: reload_mail = 1; break; @@ -223,6 +229,7 @@ sig_handler(int sig) reload_battery = 1; break; } + errno = saved_errno; } void @@ -237,6 +244,7 @@ install_signal_handlers(void) if (sigaction(SIGTERM, &sa, NULL) == -1) perror("sigaction"); if (sigaction(SIGINT, &sa, NULL) == -1) perror("sigaction"); if (sigaction(SIGHUP, &sa, NULL) == -1) perror("sigaction"); + if (sigaction(SIGCHLD, &sa, NULL) == -1) perror("sigaction"); if (sigaction(SIGUSR1, &sa, NULL) == -1) perror("sigaction"); if (sigaction(SIGUSR2, &sa, NULL) == -1) perror("sigaction"); }