From 449c0694d6f9ff34bb0bd853a8da6312b3167f39 Mon Sep 17 00:00:00 2001 From: Marius Halden Date: Fri, 27 Nov 2015 04:38:07 +0100 Subject: Wait no more than three seconds for reap_all() --- scan.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'scan.c') diff --git a/scan.c b/scan.c index fc6f877..1fe04fa 100644 --- a/scan.c +++ b/scan.c @@ -217,10 +217,18 @@ scan_svcdir(int dir_fd) void reap_all() { - int r; + int r, m = 0; for (;;) { - r = wait(NULL); + r = waitpid(-1, NULL, WNOHANG); + + if (r == 0) { + m++; + if (m >= 3) + break; + sleep(1); + } + if (r != -1) continue; @@ -484,7 +492,7 @@ end: reset_signals(); fprintf(stderr, "Waiting for children to exit\n"); - reap_all(); /* XXX: Maybe remove this for shorter shutdown? */ + reap_all(); return 0; } -- cgit v1.2.3