SELECT(2) COMMAND REFERENCE SELECT(2)
NAME
select - synchronous I/O multiplexing
SYNOPSIS
#include <sys/time.h>
nfound = select(nfd, readfd, writefd, execptfd, timeout)
int nfound, nfd;
unsigned long readfd[], writefd[], execptfd[];
struct timeval *timeout;
DESCRIPTION
Select examines the I/O descriptors specified by the arrays
of bit masks readfd, writefd, and execptfd to see if they
are ready for reading, writing, or have an exceptional
condition pending, respectively. These mask arrays must be
at least as long as "(nfd+31)/32", or one element for every
32 file descriptors. File descriptor f is represented in
the mask by:
mask[f/32] |= 1 << (f % 32)
Nfd descriptors are checked, i.e. the bits from 0 through
nfd-1 in the masks are examined. Select returns, in place,
a mask of those descriptors which are ready. The total
number of ready descriptors is returned in nfound.
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 readfd, writefd, and execptfd may be given as 0 if no
descriptors are of interest.
DIAGNOSTICS
An error return from select indicates:
[EBADF]
One of the bit masks specifies an invalid descriptor.
[EINTR]
An signal was delivered before any of the selected-for
events occurred or the time limit expired.
[EINVAL]
Timeout does not point to a reasonable value.
[EFAULT]
An argument specifies an invalid address.
Printed 10/17/86 1
SELECT(2) COMMAND REFERENCE SELECT(2)
RETURN VALUE
Select returns the number of descriptors contained in the
bit masks, or -1 if an error occurred. If the time limit
expires then select returns 0.
CAVEATS
The descriptor masks (up to "(nfd+31)/32") are always
modified on return, even if the call returns as the result
of the timeout.
The return value of mask for descriptors greater than
specified by nfd is undefined. In other words, the bits
specified by
mask[f/32] & (1 << (f % 32))
where f is greater than or equal to nfd should not be
assumed to have any meaningful value.
The magic constant 32 mentioned above is the number of bits
in a long.
SEE ALSO
accept(2), connect(2), read(2), recv(2), send(2), write(2).
Printed 10/17/86 2
%%index%%
na:72,73;
sy:145,1140;
de:1285,1426;
di:2711,516;
rv:3371,314;
ca:3685,641;
se:4326,216;
%%index%%000000000122