[Python-Dev] Draft PEP to make file objects support non-blocking
mode.
Greg Ewing
greg.ewing at canterbury.ac.nz
Tue Mar 22 01:49:23 CET 2005
Donovan Baarda wrote:
> Consider the following. This is pretty much the only way you can use
> popen2 reliably without knowing specific behaviours of the executed
> command;
>
> ...
> fcntl.fcntl(child_in, fcntl.F_SETFL, flags | os.O_NONBLOCK) # \
> ... # /
> fcntl.fcntl(child_out, fcntl.F_SETFL, flags | os.O_NONBLOCK)# \
I still don't believe you need to make these non-blocking.
When select() returns a fd for reading/writing, it's telling
you that the next os.read/os.write call on it will not block.
Making the fd non-blocking as well is unnecessary and perhaps
even undesirable.
> For 1) and 2), note that popen2 returns file objects, but as they cannot
> be reliably used as file objects, we ignore them and grab their
> fileno(). Why does popen2 return file objects if they cannot reliably be
> used?
I would go along with giving file objects alternative read/write
methods which behave more like os.read/os.write, maybe called
something like readsome() and writesome(). That would eliminate
the need to extract and manipulate the fds, and might make it
possible to do some of this stuff in a more platform-independent
way.
--
Greg Ewing, Computer Science Dept, +--------------------------------------+
University of Canterbury, | A citizen of NewZealandCorp, a |
Christchurch, New Zealand | wholly-owned subsidiary of USA Inc. |
greg.ewing at canterbury.ac.nz +--------------------------------------+
More information about the Python-Dev
mailing list