diff options
Diffstat (limited to 'init/init.c')
-rw-r--r-- | init/init.c | 5 |
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 { |