SELECT(2)                                                            SELECT(2)


NAME
       select - synchronous I/O multiplexing

SYNOPSIS
       #include <sys/types.h>
       #include <sys/time.h>

       nfound = select(nfds, readfds, writefds, exceptfds, timeout)
       int nfound, nfds;
       fd_set *readfds, *writefds, *exceptfds;
       struct timeval *timeout;

       FD_SET(fd, &fdset)
       FD_CLR(fd, &fdset)
       FD_ISSET(fd, &fdset)
       FD_ZERO(&fdset)
       int fd;
       fd_set fdset;

DESCRIPTION
       Select  examines  the I/O descriptor sets whose addresses are passed in
       readfds, writefds, and exceptfds to see if some  of  their  descriptors
       are  ready  for  reading, are ready for writing, or have an exceptional
       condition  pending,  respectively.   The  first  nfds  descriptors  are
       checked  in each set; i.e. the descriptors from 0 through nfds-1 in the
       descriptor sets are examined.  On return,  select  replaces  the  given
       descriptor  sets  with subsets consisting of those descriptors that are
       ready for the requested operation.  The total number of ready  descrip‐
       tors in all the sets is returned in nfound.

       The  descriptor  sets  are  stored as bit fields in arrays of integers.
       The following macros are  provided  for  manipulating  such  descriptor
       sets:  FD_ZERO(&fdset)  initializes  a descriptor set fdset to the null
       set.  FD_SET(fd, &fdset) includes a particular descriptor fd in  fdset.
       FD_CLR(fd,  &fdset)  removes  fd  from  fdset.  FD_ISSET(fd, &fdset) is
       nonzero if fd is a member of fdset, zero otherwise.   The  behavior  of
       these  macros  is  undefined if a descriptor value is less than zero or
       greater than or equal to FD_SETSIZE, which is normally at  least  equal
       to the maximum number of descriptors supported by the system.

       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 exceptfds may be given as  zero  pointers
       if no descriptors are of interest.

RETURN VALUE
       Select  returns  the  number of ready descriptors that are contained in
       the descriptor sets, or -1 if an error occurred.   If  the  time  limit
       expires  then  select  returns  0.   If  select  returns with an error,
       including one due to an interrupted call, the descriptor sets  will  be
       unmodified.

ERRORS
       An error return from select indicates:

       [EBADF]        One of the descriptor sets specified an invalid descrip‐
                      tor.

       [EINTR]        A signal was delivered before the time limit expired and
                      before any of the selected events occurred.

       [EINVAL]       The  specified time limit is invalid.  One of its compo‐
                      nents is negative or too large.

SEE ALSO
       accept(2), connect(2), read(2), write(2), recv(2), send(2),  getdtable‐
       size(2)

BUGS
       Although  the  provision of getdtablesize(2) was intended to allow user
       programs to be written independent of the kernel limit on the number of
       open  files, the dimension of a sufficiently large bit field for select
       remains a problem.  The default  size  FD_SETSIZE  (currently  256)  is
       somewhat  larger  than  the  current kernel limit to the number of open
       files.  However, in order to accommodate programs  which  might  poten‐
       tially use a larger number of open files with select, it is possible to
       increase this size within a program by providing a larger definition of
       FD_SETSIZE before the inclusion of <sys/types.h>.

       Select  should  probably  return  the  time remaining from the original
       timeout, if any, by modifying the time value in  place.   This  may  be
       implemented  in  future  versions of the system.  Thus, it is unwise to
       assume that the timeout value will be unmodified by the select call.


4.2 Berkeley Distribution        May 15, 1986                        SELECT(2)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 1166
Valid CSS Valid XHTML 1.0 Strict