Clarify the interaction between timeout/non-blocking mode, makefile

and fromfd.
This commit is contained in:
Guido van Rossum 2002-06-07 12:38:23 +00:00
parent 62a7f63a24
commit 715b861d94

View File

@ -284,7 +284,7 @@ checked --- subsequent operations on the object may fail if the file
descriptor is invalid. This function is rarely needed, but can be descriptor is invalid. This function is rarely needed, but can be
used to get or set socket options on a socket passed to a program as used to get or set socket options on a socket passed to a program as
standard input or output (such as a server started by the \UNIX{} inet standard input or output (such as a server started by the \UNIX{} inet
daemon). The socket is assumed to be created in blocking mode without daemon). The socket is assumed to be in blocking mode without
a timeout. a timeout.
Availability: \UNIX. Availability: \UNIX.
\end{funcdesc} \end{funcdesc}
@ -455,6 +455,7 @@ are described in \ref{bltin-file-objects}, ``File Objects.'')
The file object references a \cfunction{dup()}ped version of the The file object references a \cfunction{dup()}ped version of the
socket file descriptor, so the file object and socket object may be socket file descriptor, so the file object and socket object may be
closed or garbage-collected independently. closed or garbage-collected independently.
The socket should be in blocking mode.
\index{I/O control!buffering}The optional \var{mode} \index{I/O control!buffering}The optional \var{mode}
and \var{bufsize} arguments are interpreted the same way as by the and \var{bufsize} arguments are interpreted the same way as by the
built-in \function{file()} function; see ``Built-in Functions'' built-in \function{file()} function; see ``Built-in Functions''
@ -546,6 +547,14 @@ previously set timeout. Setting the timeout to zero acts similarly
but is implemented different than setting the socket in non-blocking but is implemented different than setting the socket in non-blocking
mode (this could be considered a bug and may even be fixed). mode (this could be considered a bug and may even be fixed).
Timeout mode internally sets the socket in non-blocking mode. The
blocking and timeout modes are shared between file descriptors and
socket objects that refer to the same network endpoint. A consequence
of this is that file objects returned by the \method{makefile()}
method should only be used when the socket is in blocking mode; in
timeout or non-blocking mode file operations that cannot be completed
immediately will fail.
\begin{methoddesc}[socket]{setsockopt}{level, optname, value} \begin{methoddesc}[socket]{setsockopt}{level, optname, value}
Set the value of the given socket option (see the \UNIX{} manual page Set the value of the given socket option (see the \UNIX{} manual page
\manpage{setsockopt}{2}). The needed symbolic constants are defined in \manpage{setsockopt}{2}). The needed symbolic constants are defined in