From: Jeremiah Mahler Date: Wed, 28 May 2014 06:14:12 GMT Subject: [PATCH 2/5] daemon.c run_service(): replace signal() with sigaction() Message-ID: <1401257655-6043-3-git-send-email-jmmahler@gmail.com> In-Reply-To: <1401257655-6043-1-git-send-email-jmmahler@gmail.com> From signal(2) The behavior of signal() varies across UNIX versions, and has also var‐ ied historically across different versions of Linux. Avoid its use: use sigaction(2) instead. See Portability below. Replaced signal() with sigaction() in daemon.c run_service() Signed-off-by: Jeremiah Mahler --- daemon.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/daemon.c b/daemon.c index eba1255..78c4a1c 100644 --- a/daemon.c +++ b/daemon.c @@ -322,6 +322,7 @@ static int run_service(char *dir, struct daemon_service *service) { const char *path; int enabled = service->enabled; + struct sigaction sa; loginfo("Request %s for '%s'", service->name, dir); @@ -376,7 +377,9 @@ static int run_service(char *dir, struct daemon_service *service) * We'll ignore SIGTERM from now on, we have a * good client. */ - signal(SIGTERM, SIG_IGN); + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = SIG_IGN; + sigaction(SIGTERM, &sa, 0); return service->fn(); } -- 2.0.0.rc4.6.g127602c