Arild Hansen arildh at
Tue Sep 19 11:26:27 CEST 2000

Donn Cave wrote:

> Quoth "Arild Hansen" <arildh at>:
> | What is the exact purpose of fileno()? I keep searching for a good
> | explanation of this function returning a file handler to an object, but what
> | is the precise meaning and purpose of this? All help greatly appreciated !
> The file object is an I/O buffer and a device.  The C library allocates
> space for the buffer in your process memory, and when you read or write
> the data comes from or goes to that buffer.  The stdio C library functions
> manage the buffer by reading or writing to the device.
> Since physical device access is a very expensive operation for the computer,
> buffering like that basically allows you to work with small or random size
> I/O requests while economizing on system resources.  However, there are
> times when you need to do something that the stdio library doesn't account
> for, like select(), or a filesystem lock, or some terminal driver function.
> The fileno() function exposes the file object's file descriptor or unit
> number, which on UNIX is the raw device.  Select() already knows about
> fileno(), so you can give it a socket or whatever and it will call fileno()
> itself, but usually it's up to you to call fileno() and get the descriptor.
> Of course the socket fileno() function is more or less the same idea as
> the file object's fileno(), but the socket isn't a file object and doesn't
> have its own buffer.  (On UNIX you can make a file object from a socket,
> but it's difficult to make that work both properly and efficiently with
> select().)  The result from socket fileno() is a file descriptor on UNIX,
> but it isn't necessarily so on other operating systems.
> You can get file descriptors directly if you use the function,
> (A.K.A.
>         Donn Cave, donn at

Thx for very informative answers !!

Arild Hansen

More information about the Python-list mailing list