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:
parent
5837240451
commit
1697c192ac
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user