Dialog with a process via subprocess.Popen blocks forever
Hendrik van Rooyen
mail at microcorp.co.za
Thu Mar 1 06:54:24 CET 2007
<bayer.justin at googlemail.com> wrote:
> Is it possible to read to and write to the std streams of a
> subprocess? What am I doing wrong?
I think this problem lies deeper - there has been a lot of
complaints about blocking and data getting stuck in pipes
I have noticed that the Python file objects seem to be
inherently half duplex, but I am not sure if it is python
or the underlying OS. (Suse 10 in my case)
You can fix it by unblocking using the fcntl module,
but then all your accesses have to be in try - except
It may be worth making some sort of FAQ on this
subject, as it appears from time to time.
The standard advice has been to use file.flush()
after file.write(), but if you are threading and
have called file.read(n), then the flushing does
not help - this is why I say that the file object
seems to be inherently half duplex.
It makes perfect sense, of course, if the file is a
real disk file, as you have to finish the read before
you can move the heads to do the write- but for
pipes, sockets and RS-232 serial lines it does not
make so much sense.
Does anybody know where it comes from -
Python, the various OSses, or C?
More information about the Python-list