diff options
Diffstat (limited to 'scan.c')
-rw-r--r-- | scan.c | 21 |
1 files changed, 5 insertions, 16 deletions
@@ -235,19 +235,6 @@ reap_all() } } -void -signal_services(int sig) -{ - struct svc *np; - - TAILQ_FOREACH(np, &services, entries) { - if (np->supervisor != -1) { - if (kill(np->supervisor, sig) == -1) /* XXX: Handle failure better? */ - perror("kill()"); - } - } -} - int try_wait() { @@ -405,6 +392,7 @@ main(int argc, char **argv) { int kq, dir_fd, lock_fd; struct kevent evt[6]; + struct procctl_reaper_kill rk; pid_t mypid = getpid(); if (argc > 1) @@ -460,7 +448,6 @@ main(int argc, char **argv) } } if (revt[i].ident == SIGHUP || revt[i].ident == SIGINT || revt[i].ident == SIGTERM) { - fprintf(stderr, "Quit\n"); goto end; } } else if (revt[i].filter == EVFILT_TIMER) { @@ -475,7 +462,9 @@ main(int argc, char **argv) } end: - signal_services(SIGTERM); + rk.rk_sig = SIGTERM; + rk.rk_flags = REAPER_KILL_CHILDREN; + procctl(P_PID, mypid, PROC_REAP_KILL, &rk); if (close(kq) == -1) perror("close()"); @@ -486,7 +475,7 @@ end: reset_signals(); - reap_all(); + reap_all(); /* XXX: Maybe remove this for shorter shutdown? */ return 0; } |