term% cat index.txt SELECT(2) System Calls Manual SELECT(2)
NAME
select - synchronous I/O multiplexing
SYNOPSIS
#include <sys/types.h>
int select(nfds, readfds, writefds, milli);
fd_set *readfds, *writefds;
DESCRIPTION
Select examines the IO descriptors specified by the bit masks readfds
and writefds to see if they are ready for reading and/or writing re‐
spectively and returns, in place, a mask of those descriptors which are
ready. Only descriptors 0 through nfds-1 are examined. The total num‐
ber of ready descriptors is returned.
File descriptors referring to ordinary files and non-stream special
files always appear ready.
Milli is the maximum number of milliseconds to wait before giving up if
no descriptors come active. If no maximum wait is desired a very large
integer can be given. If milli is 0, select returns whatever informa‐
tion is available without blocking.
Either readfds or writefds may be null if no descriptors are interest‐
ing. Readfds and writefds point to a structure containing a simple bit
mask: file descriptor f is represented by the bit 1<<(f%N) in
readfds->fds_bits[f/N], where N is the number of bits in an int (given
by the constant expression NBBY*NBPW). These macros manipulate the
bits of mask s:
FD_ZERO(s) clear all bits
FD_SET(n,s) set bit n
FD_CLR(n,s) clear bit n
FD_ISSET(n,s) test bit n
BUGS
Milli is rounded up to the nearest second.
Select is intended for use with streams; it does not work with non-
stream special files that can block.
SELECT(2)