aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-12-17 09:48:16 +0000
committerEric Andersen <andersen@codepoet.org>2002-12-17 09:48:16 +0000
commitcf1fee06a5e4b18b97f9b279694baae403d7289b (patch)
treef31c5eccb319ce14d21ee30aca71be455ff3e50f
parentbe2ae246fb69d903a492adaed7e3b476c7133718 (diff)
downloadbusybox-w32-cf1fee06a5e4b18b97f9b279694baae403d7289b.tar.gz
busybox-w32-cf1fee06a5e4b18b97f9b279694baae403d7289b.tar.bz2
busybox-w32-cf1fee06a5e4b18b97f9b279694baae403d7289b.zip
Odd. I never brought this forward from bb.stable. Should handle
reaping child processes better. -Erik
-rw-r--r--init/init.c4
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)
1141 1141
1142 /* Wait for a child process to exit */ 1142 /* Wait for a child process to exit */
1143 wpid = wait(&status); 1143 wpid = wait(&status);
1144 if (wpid > 0) { 1144 while (wpid > 0) {
1145 /* Find out who died and clean up their corpse */ 1145 /* Find out who died and clean up their corpse */
1146 for (a = init_action_list; a; a = a->next) { 1146 for (a = init_action_list; a; a = a->next) {
1147 if (a->pid == wpid) { 1147 if (a->pid == wpid) {
@@ -1152,6 +1152,8 @@ extern int init_main(int argc, char **argv)
1152 "Scheduling it for restart.\n", a->command, wpid); 1152 "Scheduling it for restart.\n", a->command, wpid);
1153 } 1153 }
1154 } 1154 }
1155 /* see if anyone else is waiting to be reaped */
1156 wpid = waitpid (-1, &status, WNOHANG);
1155 } 1157 }
1156 } 1158 }
1157} 1159}