OwnedFd
This may still leak fds in some error cases. That can be solved by using `OwnedFd` when the next Rust stable releases.