ahh... correction... err... actually, builtin msvcrt _doesn't_ go according to plan!
the data is returned (echo hello) but the python process hangs - it never sees the results come back.
correction: the reason for that was that my test case had "cmd /k echo test" not "cmd /c echo test".
so i needed to type "exit" return.
so, we conclude that the child process creation code using msvcrt is fine but with msvcr80 is buggered. i've found a test example (KB Q190351) which does a reaaasonable job - reading from the console of the child doesn't work.
so the code from Q190351 would be a _good_ one to use.
or write a test case based on Modules/posixmodule.c.