Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

accept(2)

connect(2)

read(2)

recv(2)

send(2)

write(2)



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.

RETURN VALUE
     Select returns the number of descriptors contained in the



Printed 4/6/89                                                  1





SELECT(2)               COMMAND REFERENCE               SELECT(2)



     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), and
     write(2).
































Printed 4/6/89                                                  2



%%index%%
na:288,89;
sy:377,1764;
de:2141,1507;
di:3648,611;
rv:4259,246;4865,160;
ca:5025,679;
se:5704,254;
%%index%%000000000132

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026