Use childErrno only if we fully read it

If reading childErrno from child process failed or the read was partial,
a bogus errno value was set and used to create an OSError.  This patch
use errno value when read failed, and EIO when read from client was
partial.