}
if (child) {
- pr_info("Forked child %d\n", child);
child_count++;
+ pr_info("Fork %d, child %d\n", child_count, child);
return child;
}
if (child_count == 0)
return 0;
+ if (pid)
+ pr_info("Waiting on pid %d, children left: %d\n", pid,
+ child_count);
+
pid = waitpid(pid, &status, 0);
if (pid < 0) {
error = errno;
pr_err("Error on wait(): %s\n", strerror(error));
+ child_count--; /* Decrement child count anyway */
}
- else
+ else {
+ child_count--;
pr_info("pid %d: exit code %d. Children left: %d\n", pid,
- status, --child_count);
+ status, child_count);
+ }
return 1;
}
close(wfd[0]);
*readfd = rfd[0];
*writefd = wfd[1];
- child_count++;
return pid;
}
int run_piped_stream(const char *cmd, char *const argv[],
FILE **readf, FILE **writef);
-extern int child_count;
-
#endif