[PATCH 4/5] daemon.c service_loop(): replace signal() with sigaction()
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 service_loop()
Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
---
daemon.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/daemon.c b/daemon.c
index 3c48dc0..8c28b3d 100644
--- a/daemon.c
+++ b/daemon.c
@@ -1002,6 +1002,7 @@ static int service_loop(struct socketlist *socklist)
{
struct pollfd *pfd;
int i;
+ struct sigaction sa;
pfd = xcalloc(socklist->nr, sizeof(struct pollfd));
@@ -1010,7 +1011,9 @@ static int service_loop(struct socketlist *socklist)
pfd[i].events = POLLIN;
}
- signal(SIGCHLD, child_handler);
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = child_handler;
+ sigaction(SIGCHLD, &sa, 0);
for (;;) {
int i;
--
2.0.0.rc4.6.g127602c