- If the process exits abnormally then we will leak the stdout and
stderr FDs. Fix it by closing the FDs before returning.
- If another child process exits then we will incorrectly return the
result from that process instead of waiting for our child. Fix it
by using waitpid instead of wait.
Change-Id: I8974d5e4bd33f264cd2d364f55a60f1f5cb7eb1a