From e1939b04348e5467e8c85c6a1a05e68484101d41 Mon Sep 17 00:00:00 2001 From: Marius Halden Date: Fri, 27 Nov 2015 04:31:37 +0100 Subject: Error checking and such --- scan.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'scan.c') diff --git a/scan.c b/scan.c index b43485b..fc6f877 100644 --- a/scan.c +++ b/scan.c @@ -393,6 +393,7 @@ main(int argc, char **argv) int kq, dir_fd, lock_fd; struct kevent evt[6]; struct procctl_reaper_kill rk; + struct procctl_reaper_status rs; pid_t mypid = getpid(); if (argc > 1) @@ -462,9 +463,16 @@ main(int argc, char **argv) } end: - rk.rk_sig = SIGTERM; - rk.rk_flags = REAPER_KILL_CHILDREN; - procctl(P_PID, mypid, PROC_REAP_KILL, &rk); + if (procctl(P_PID, mypid, PROC_REAP_STATUS, &rs) != -1) { + if (rs.rs_children > 0) { + rk.rk_sig = SIGTERM; + rk.rk_flags = REAPER_KILL_CHILDREN; + if (procctl(P_PID, mypid, PROC_REAP_KILL, &rk)) + perror("procctl()"); + } + } else { + perror("procctl()"); + } if (close(kq) == -1) perror("close()"); @@ -475,6 +483,7 @@ end: reset_signals(); + fprintf(stderr, "Waiting for children to exit\n"); reap_all(); /* XXX: Maybe remove this for shorter shutdown? */ return 0; -- cgit v1.2.3