aboutsummaryrefslogtreecommitdiff
path: root/init/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'init/init.c')
-rw-r--r--init/init.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/init/init.c b/init/init.c
index b73234e..d8d1906 100644
--- a/init/init.c
+++ b/init/init.c
@@ -1528,11 +1528,12 @@ int main(int argc, char **argv, char **envp) {
return 1;
}
else if (res > 0) {
+ int ret;
print("<E>xec(parent) : waiting for termination\n");
- while (wait(&error) != res)
+ while (((ret = wait(&error)) != -1) && (ret != res))
print("<E>xec(parent) : signal received\n");
- error = (WIFEXITED(error) > 0) ? WEXITSTATUS(error) : 1;
+ error = (ret == -1) || ((WIFEXITED(error) > 0) ? WEXITSTATUS(error) : 1);
print("<E>xec(parent) : child exited\n");
}
else {