diff options
-rw-r--r-- | init/init.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/init/init.c b/init/init.c index bb1f383b3..91a19c5d1 100644 --- a/init/init.c +++ b/init/init.c @@ -1141,7 +1141,7 @@ extern int init_main(int argc, char **argv) /* Wait for a child process to exit */ wpid = wait(&status); - if (wpid > 0) { + while (wpid > 0) { /* Find out who died and clean up their corpse */ for (a = init_action_list; a; a = a->next) { if (a->pid == wpid) { @@ -1152,6 +1152,8 @@ extern int init_main(int argc, char **argv) "Scheduling it for restart.\n", a->command, wpid); } } + /* see if anyone else is waiting to be reaped */ + wpid = waitpid (-1, &status, WNOHANG); } } } |