From: Petar Paradzik Date: Mon, 3 Jul 2017 11:37:56 +0000 (+0200) Subject: uloop: make SIGCHLD signal handling optional X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=commitdiff_plain;h=f714be125c9b85e184a482bc22e958b5cadfad3a;hp=7a1057604ed2ad83434ed3be03728065b14a5e9c uloop: make SIGCHLD signal handling optional Some programs want to manage their own child life cycle without using SIGCHLD signal handler. In these cases, uloop is reaping children for them because they don't have SIGCHLD handler set. This patch makes it possible to disable reaping children through 'uloop_handle_sigchld' variable. Signed-off-by: Petar Paradzik --- diff --git a/uloop.c b/uloop.c index 3813e18..8517366 100644 --- a/uloop.c +++ b/uloop.c @@ -58,6 +58,7 @@ static struct list_head processes = LIST_HEAD_INIT(processes); static int poll_fd = -1; bool uloop_cancelled = false; +bool uloop_handle_sigchld = true; static int uloop_status = 0; static bool do_sigchld = false; @@ -466,7 +467,9 @@ static void uloop_setup_signals(bool add) uloop_install_handler(SIGINT, uloop_handle_sigint, &old_sigint, add); uloop_install_handler(SIGTERM, uloop_handle_sigint, &old_sigterm, add); - uloop_install_handler(SIGCHLD, uloop_sigchld, &old_sigchld, add); + + if (uloop_handle_sigchld) + uloop_install_handler(SIGCHLD, uloop_sigchld, &old_sigchld, add); uloop_ignore_signal(SIGPIPE, add); }