| \section{Built-in Module \module{select}} |
| \label{module-select} |
| \bimodindex{select} |
| |
| This module provides access to the function \cfunction{select()} |
| available in most \UNIX{} versions. It defines the following: |
| |
| \begin{excdesc}{error} |
| The exception raised when an error occurs. The accompanying value is |
| a pair containing the numeric error code from \cdata{errno} and the |
| corresponding string, as would be printed by the \C{} function |
| \cfunction{perror()}. |
| \end{excdesc} |
| |
| \begin{funcdesc}{select}{iwtd, owtd, ewtd\optional{, timeout}} |
| This is a straightforward interface to the \UNIX{} \cfunction{select()} |
| system call. The first three arguments are lists of `waitable |
| objects': either integers representing \UNIX{} file descriptors or |
| objects with a parameterless method named \method{fileno()} returning |
| such an integer. The three lists of waitable objects are for input, |
| output and `exceptional conditions', respectively. Empty lists are |
| allowed. The optional \var{timeout} argument specifies a time-out as a |
| floating point number in seconds. When the \var{timeout} argument |
| is omitted the function blocks until at least one file descriptor is |
| ready. A time-out value of zero specifies a poll and never blocks. |
| |
| The return value is a triple of lists of objects that are ready: |
| subsets of the first three arguments. When the time-out is reached |
| without a file descriptor becoming ready, three empty lists are |
| returned. |
| |
| Amongst the acceptable object types in the lists are Python file |
| objects (e.g. \code{sys.stdin}, or objects returned by |
| \function{open()} or \function{os.popen()}), socket objects |
| returned by \function{socket.socket()},% |
| \withsubitem{(in module socket)}{\ttindex{socket()}} |
| \withsubitem{(in module posix)}{\ttindex{popen()}} |
| \withsubitem{(in module os)}{\ttindex{popen()}} |
| and the module \module{stdwin}\refbimodindex{stdwin} which happens to |
| define a function \function{fileno()}% |
| \withsubitem{(in module stdwin)}{\ttindex{fileno()}} |
| for just this purpose. You may |
| also define a \dfn{wrapper} class yourself, as long as it has an |
| appropriate \method{fileno()} method (that really returns a \UNIX{} |
| file descriptor, not just a random integer). |
| \end{funcdesc} |