diff options
Diffstat (limited to 'libs/androidfw/PosixUtils.cpp')
-rw-r--r-- | libs/androidfw/PosixUtils.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/androidfw/PosixUtils.cpp b/libs/androidfw/PosixUtils.cpp index f1ab1493012a..4ec525a01da5 100644 --- a/libs/androidfw/PosixUtils.cpp +++ b/libs/androidfw/PosixUtils.cpp @@ -72,7 +72,8 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv) argv0[i] = argv[i].c_str(); } argv0[argv.size()] = nullptr; - switch (fork()) { + int pid = fork(); + switch (pid) { case -1: // error free(argv0); PLOG(ERROR) << "fork"; @@ -104,8 +105,10 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv) close(stdout[1]); close(stderr[1]); int status; - wait(&status); + waitpid(pid, &status, 0); if (!WIFEXITED(status)) { + close(stdout[0]); + close(stderr[0]); return nullptr; } std::unique_ptr<ProcResult> result(new ProcResult()); |