X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/404e813c5233db8d6cc0cc74b7b49922c0953773..7a176e87d56de890fed07b1621277ab74b21b706:/util.c diff --git a/util.c b/util.c index e6d127c1..245f3b29 100644 --- a/util.c +++ b/util.c @@ -84,7 +84,7 @@ int fd_pair(int fd[2]) } -void print_child_argv(char **cmd) +static void print_child_argv(char **cmd) { rprintf(FINFO, "opening connection using "); for (; *cmd; cmd++) { @@ -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) {