SELECT(2) — System Interface Manual — System Calls
NAME
select − synchronous i/o multiplexing
SYNOPSIS
#include <time.h>
nfds = 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. 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 affect a poll, the timeout argument should be non-zero, 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 Iselect returns 0.
ERRORS
An error return from select indicates:
[EBADF] One of the bit masks specified an invalid descriptor.
[EINTR] An signal was delivered before any of the selected for events occured or the time limit expired.
SEE ALSO
accept(2), connect(2), read(2), write(2), recv(2), send(2)
Sun System Release 0.3 — 23 March 1983