geoff.ba...@gmail.com wrote: > >The following code behaves differently on Windows and Linux using >Python 2.5.2. The Linux behaviour is what I expect in both places :) >Perhaps somebody could help explain this. Or maybe it is a Python bug. >Or a Windows feature... >... >On Windows if I run "communicate.py" it does not return for 10 >seconds, i.e. until the "grandchild" background process terminates. On >Linux it returns immediately as I would expect. > >If I replace "p.communicate()" with "p.wait()" it returns immediately >on both. If I don't point stdin, stdout and stderr of the child >process to os.devnull then it will wait 10 seconds on Linux also, >which I'd also expect as we can't collect info from these places if >they've been forwarded elsewhere. It seems like Windows somehow >doesn't notice this.
If you trace through this: python -m trace --trace communicate.py you'll see that it hangs in subprocess in the stdout_thread waiting for stdout to close. I'm not sure I expect this to work as you expect. When you open a null device, it's just another file handle. Why should the behavior be different? -- Tim Roberts, t...@probo.com Providenza & Boekelheide, Inc. -- http://mail.python.org/mailman/listinfo/python-list