select(2N) select(2N)NAME select - synchronous I/O multiplexing SYNOPSIS #include <sys/time.h> int select(nfds, readfds, writefds, execptfds, timeout) int nfds, *readfds, *writefds, *execptfds; struct timeval *timeout; DESCRIPTION select examines the I/O descriptors specified by the bit masks readfds, writefds, and execptfds to see if they are ready for reading, writing, or have an exceptional condition pending, respectively. File descriptor f is represented by the bit 1<<f in the mask. nfds descriptors are checked, that is, the bits from 0 through nfds-1 in the masks are ex- amined. select returns, in place, a mask of those descrip- tors which are ready. The total number of ready descriptors is returned. If timeout is a nonzero pointer, it specifies a maximum in- terval to wait for the selection to complete. If timeout is a zero pointer, the select blocks indefinitely. To affect a poll, the timeout argument should be nonzero, pointing to a zero valued timeval structure. Any of readfds, writefds, and execptfds may be given as 0 if no descriptors are of interest. RETURN VALUE select returns the number of descriptors which are contained in the bit masks, or -1 if an error occurred. If the time limit expires then select returns 0. ERRORS An error return from select indicates: [EBADF] One of the bit masks specified an invalid descriptor. [EINTR] A signal was delivered before any of the selected for events occurred or the time lim- it expired. SEE ALSO accept(2N), connect(2N), recv(2N), readv(2), send(2N), wri- tev(2). BUGS The descriptor masks are always modified on return, even if the call returns as the result of the timeout. April, 1990 1