lib/spawn.c run_command: don't loop forever if waitpid() is returning ECHILD

If SIGCHILD is being ignored, waitpid() will forever error with ECHILD and
this loop with never end, so don't loop if it erros with ECHILD.
This commit is contained in:
Thomas Abraham 2019-04-25 14:56:22 -04:00
parent 5837240451
commit 1697c192ac

View File

@ -68,8 +68,9 @@ int run_command (const char *cmd, const char *argv[],
do {
wpid = waitpid (pid, status, 0);
} while ( ((pid_t)-1 == wpid && errno == EINTR)
|| ((pid_t)-1 != wpid && wpid != pid));
} while ( ((pid_t)-1 == wpid && errno != ECHILD)
&& (((pid_t)-1 == wpid && errno == EINTR)
|| ((pid_t)-1 != wpid && wpid != pid)));
if ((pid_t)-1 == wpid) {
fprintf (stderr, "%s: waitpid (status: %d): %s\n",