Johannes Schindelin [off-list ref] writes:
Signal handlers should never call syslog(), as that can raise signals
of its own.
Instead, call the syslog() from the master process.
Earlier parts seem to make sense but I am puzzled by these changes.
quoted hunk
@@ -929,7 +945,8 @@ static int service_loop(int socknum, int *socklist)
for (;;) {
int i;
- if (poll(pfd, socknum, -1) < 0) {
+ i = poll(pfd, socknum, 1);
+ if (i < 0) {
if (errno != EINTR) {
error("poll failed, resuming: %s",
strerror(errno));@@ -937,6 +954,10 @@ static int service_loop(int socknum, int *socklist)
}
continue;
}
+ if (i == 0) {
+ check_dead_children();
+ continue;
+ }
So you will check every 1ms to see if there are new dead children, but why
is this necessary?