4.1cBSD/usr/man/man2/select.2

Compare this file to the similar file:
Show the results in this format:

.TH SELECT 2 2/12/83
.SH NAME
select \- synchronous i/o multiplexing
.SH SYNOPSIS
.nf
.ft B
#include <time.h>
.PP
.ft B
nfds = select(nfds, readfds, writefds, execptfds, timeout)
int nfds, *readfds, *writefds, *execptfds;
struct timeval *timeout;
.fi
.SH DESCRIPTION
.I Select
examines the i/o descriptors specified by the bit masks
.IR readfds ,
.IR writefds ,
and
.I execptfds
to see if they are ready for reading, writing, or have an exceptional
condition pending, respectively.
File descriptor 
.I f
is represented by the bit \*(lq1<<f\*(rq in
the mask.
.I Select
returns, in place, a mask of those descriptors which are ready.
The total number of ready descriptors is returned in
.IR nfds .
.PP
If
.I timeout
is a non-zero pointer, it specifies a maximum interval to wait for the
selection to complete.  If 
.I timeout
is a zero pointer, the select blocks indefinitely.  To affect a poll, the
.I timeout
argument should be non-zero, pointing to a zero valued timeval structure.
.PP
Any of
.IR readfds ,
.IR writefds ,
and
.I execptfds
may be given as 0 if no descriptors are of interest.
.SH "RETURN VALUE
.I 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\fP returns 0.
.SH "ERRORS
An error return from \fIselect\fP indicates:
.TP 15
[EBADF]
One of the bit masks specified an invalid descriptor.
.TP 15
[EINTR]
An signal was delivered before any of the selected for
events occured or the time limit expired.
.SH SEE ALSO
accept(2), connect(2), read(2), write(2), recv(2), send(2)