non blocking read()

Donn Cave donn at u.washington.edu
Wed Dec 1 15:47:57 EST 2004


In article <col35h$cmf$1 at news2.rz.uni-karlsruhe.de>,
 Uwe Mayer <merkosh at hadiko.de> wrote:

> Hi,
> 
> I use select() to wait for a file object (stdin) to become readable. In that
> situation I wanted to read everything available from stdin and return to
> the select statement to wait for more.
> 
> However, the file object's read method blocks if the number of bytes is 0 or
> negative. 
> 
> Is there no way to read everything a channel's got currently got without
> blocking?


Yes, there is a way - os.read() (also known as posix.read())

It's better not to mix buffered I/O (like file object
I/O functions) with select() at all, because select()
actually applies to system level file descriptors and
doesn't know anything about the buffer.

Get the file descriptor with fileno(), and never refer
to the file object again after that.

   Donn Cave, donn at u.washington.edu



More information about the Python-list mailing list