diff --git a/utils/init.cpp b/utils/init.cpp index 4b7df9cc..fa67ebee 100644 --- a/utils/init.cpp +++ b/utils/init.cpp @@ -58,7 +58,9 @@ int runsystem() return status; } - return child(); + int ret = child(); + while ( 0 < waitpid(-1, NULL, WNOHANG) ); + return ret; } int main(int argc, char* argv[]) diff --git a/utils/mxsh.cpp b/utils/mxsh.cpp index ba0c72ee..3233de6b 100644 --- a/utils/mxsh.cpp +++ b/utils/mxsh.cpp @@ -79,6 +79,9 @@ int runcommandline(const char** tokens) bool internal; int internalresult; readcmd: + // Collect any pending zombie processes. + while ( 0 < waitpid(-1, NULL, WNOHANG) ); + cmdstart = cmdnext; for ( cmdend = cmdstart; true; cmdend++ ) {