X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/6dd41b67fbe371b60f73e83a717e818dd2567f63..62b68c80466e9e3b9bb39e0bc5219ba32534235f:/util.c diff --git a/util.c b/util.c index 3e4e0f40..245f3b29 100644 --- a/util.c +++ b/util.c @@ -478,27 +478,47 @@ int robust_rename(char *from, char *to) static pid_t all_pids[10]; static int num_pids; -/* fork and record the pid of the child */ +/** Fork and record the pid of the child. **/ pid_t do_fork(void) { pid_t newpid = fork(); - if (newpid) { + if (newpid != 0 && newpid != -1) { all_pids[num_pids++] = newpid; } return newpid; } -/* kill all children */ +/** + * Kill all children. + * + * @todo It would be kind of nice to make sure that they are actually + * all our children before we kill them, because their pids may have + * been recycled by some other process. Perhaps when we wait for a + * child, we should remove it from this array. Alternatively we could + * perhaps use process groups, but I think that would not work on + * ancient Unix versions that don't support them. + **/ void kill_all(int sig) { int i; - for (i=0;i 1024*1024) {