SELECT(2) — SYSTEM CALLS
NAME
select − synchronous I/O multiplexing
SYNOPSIS
#include <sys/time.h>
nfds = select(width, readfds, writefds, exceptfds, timeout)
int width, ∗readfds, ∗writefds, ∗exceptfds;
struct timeval ∗timeout;
DESCRIPTION
select examines the I/O descriptors specified by the bit masks readfds, writefds, and exceptfds to see if they are ready for reading, writing, or have an exceptional condition pending, respectively. width is the number of significant bits in each bit mask that represent a file descriptor. Typically width has the value returned by getdtablesize(2) for the maximum number of file descriptors or is the constant 32 (number of bits in an int). File descriptor f is represented by the bit “1<<f” in the mask. select returns, in place, a mask of those descriptors which are ready. The total number of ready descriptors is returned in nfds.
If timeout is a non-zero pointer, it specifies a maximum interval to wait for the selection to complete. If timeout is a zero pointer, the select blocks indefinitely. To effect a poll, the timeout argument should be non-zero, pointing to a zero-valued timeval structure.
Any of readfds, writefds, and exceptfds may be given as NULL pointers if no descriptors are of interest.
RETURN VALUE
select returns the number of ready descriptors that 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 events occurred or the time limit expired.
EINVAL The specified time limit is unacceptable. One of its components is negative or too large.
EFAULT One of the pointers given in the call referred to a non-existent portion of the process’ address space.
SEE ALSO
accept(2), connect(2), gettimeofday(2), read(2V), write(2V), recv(2), send(2), getdtablesize(2)
BUGS
The descriptor masks are always modified on return, even if the call returns as the result of the timeout.
Sun Release 3.4 — Last change: 16 July 1986