The attached is a patch that uses the _fileno/_get_osfhandle approach.
This doesn't address the stdin fallback, or error handling if opening
termin fails; however, it should be no worse than what's there now, and
it fixes the immediate problem.
I'm still thinking about the fallback in terms of a mintty-type
environment, but I wanted to get this patch out there in the meantime.
-Matt Stickney