FD_ZERO(3C)




NAME

     select, FD_SET, FD_CLR, FD_ISSET, FD_ZERO - synchronous  I/O
     multiplexing


SYNOPSIS

     #include <sys/time.h>

     int select(int  nfds,  fd_set  *readfds,  fd_set  *writefds,
     fd_set *errorfds, struct timeval *timeout);

     void FD_SET(int fd, fd_set *fdset);

     void FD_CLR(int fd, fd_set *fdset);

     int FD_ISSET(int fd, fd_set *fdset);

     void FD_ZERO(fd_set *fdset);


DESCRIPTION

     The select() function indicates which of the specified  file
     descriptors  is ready for reading, ready for writing, or has
     an error condition pending.  If the specified  condition  is
     false  for  all  of the specified file descriptors, select()
     blocks, up to the  specified  timeout  interval,  until  the
     specified  condition  is true for at least one of the speci-
     fied file descriptors.

     The select() function supports regular files,  terminal  and
     pseudo-terminal  devices,  STREAMS-based  files,  FIFOs  and
     pipes. The behavior of select()  on  file  descriptors  that
     refer to other types of file is unspecified.

     The nfds argument specifies the range of file descriptors to
     be  tested.  The select() function tests file descriptors in
     the range of 0 to nfds-1.

     If the readfs argument is not a null pointer, it  points  to
     an  object  of  type fd_set that on input specifies the file
     descriptors to be checked for being ready to  read,  and  on
     output indicates which file descriptors are ready to read.

     If the writefs argument is not a null pointer, it points  to
     an  object  of  type fd_set that on input specifies the file
     descriptors to be checked for being ready to write,  and  on
     output indicates which file descriptors are ready to write.

     If the errorfds argument is not a null pointer, it points to
     an  object  of  type fd_set that on input specifies the file
     descriptors to be checked for error conditions pending,  and
     on output indicates which file descriptors have error condi-
     tions pending.

     On successful completion, the  objects  pointed  to  by  the
     readfs,  writefs,  and  errorfds  arguments  are modified to
     indicate which file descriptors are ready for reading, ready
     for  writing,  or  have  an error condition pending, respec-
     tively.
      For each file descriptor less than nfds, the  corresponding
     bit  will  be  set on successful completion if it was set on
     input and the associated condition is  true  for  that  file
     descriptor.

     If the timeout argument is not a null pointer, it points  to
     an  object  of  type struct timeval that specifies a maximum
     interval to wait for  the  selection  to  complete.  If  the
     timeout  argument points to an object of type struct timeval
     whose members are 0, select() does not block. If the timeout
     argument  is  a null pointer, select() blocks until an event
     causes one of the masks to be returned with  a  valid  (non-
     zero)  value.   If  the  time limit expires before any event
     occurs that would cause one of the masks  to  be  set  to  a
     non-zero  value, select() completes successfully and returns
     0.

     If the readfs, writefs, and errorfds arguments are all  null
     pointers  and  the  timeout  argument is not a null pointer,
     select() blocks for the time specified, or until interrupted
     by a signal.  If the readfs, writefs, and errorfds arguments
     are all null pointers and the timeout  argument  is  a  null
     pointer, select() blocks until interrupted by a signal.

     File descriptors associated with regular files always select
     true  for  ready  to  read, ready to write, and error condi-
     tions.

     On failure, the objects pointed to by the  readfs,  writefs,
     and  errorfds  arguments  are  not modified.  If the timeout
     interval expires without the specified condition being  true
     for  any  of  the  specified  file  descriptors, the objects
     pointed to by the readfs, writefs,  and  errorfds  arguments
     have all bits set to 0.

     A file descriptor for a socket that is listening for connec-
     tions  will indicate that it is ready for reading, when con-
     nections are available.  A file descriptor for a socket that
     is  connecting asynchronously will indicate that it is ready
     for writing, when a connection has been established.

     Selecting true for reading on a socket descriptor upon which
     a  listen(3SOCKET)  call has been performed indicates that a
     subsequent accept(3SOCKET) call on that descriptor will  not
     block.

     File descriptor masks of type fd_set can be initialized  and
     tested  with  the macros FD_CLR(), FD_ISSET(), FD_SET(), and
     FD_ZERO().

     FD_CLR(fd, &fdset)
           Clears the bit for the file descriptor fd in the  file
           descriptor set fdset.

     FD_ISSET(fd, &fdset)
           Returns a non-zero value  if  the  bit  for  the  file
           descriptor  fd  is  set  in  the  file  descriptor set
           pointed to by fdset, and 0 otherwise.

     FD_SET(fd, &fdset)
           Sets the bit for the file descriptor fd  in  the  file
           descriptor set fdset.

     FD_ZERO(&fdset)
           Initializes the file descriptor set fdset to have zero
           bits for all file descriptors.

     The behavior of these macros is undefined if the fd argument
     is less than 0 or greater than or equal to FD_SETSIZE.


RETURN VALUES

     The FD_CLR(),  FD_SET(),  and  FD_ZERO()  macros  return  no
     value.  The FD_ISSET() macro returns a non-zero value if the
     bit for the file descriptor fd is set in the file descriptor
     set pointed to by fdset, and 0 otherwise.

     On successful completion, select() returns the total  number
     of bits set in the bit masks. Otherwise, -1 is returned, and
     errno is set to indicate the error.


ERRORS

     The select() function will fail if:

     EBADF One or more of the file descriptor  sets  specified  a
           file descriptor that is not a valid open file descrip-
           tor.

     EINTR The select() function was interrupted  before  any  of
           the  selected  events  occurred and before the timeout
           interval expired.

           If SA_RESTART has been set for the  interrupting  sig-
           nal,  it  is implementation-dependent whether select()
           restarts or returns with EINTR.

     EINVAL
           An invalid timeout interval was specified.

     EINVAL
           The nfds argument is  less  than  0  or  greater  than
           FD_SETSIZE.

     EINVAL
           One of the specified  file  descriptors  refers  to  a
           STREAM  or  multiplexer  that  is  linked (directly or
           indirectly) downstream from a multiplexer.

     EINVAL
           A component of the pointed-to time  limit  is  outside
           the  acceptable  range: t_sec must be between 0 and 10
          **8, inclusive.   t_usec must be greater than or  equal
           to 0, and less than 10**6.


USAGE

     The poll(2) function is preferred  over  this  function.  It
     must  be  used  when  the number of file descriptors exceeds
     FD_SETSIZE.

     The use of a timeout does not affect any pending timers  set
     up by alarm(2), ualarm(3C) or setitimer(2).

     On successful completion,  the  object  pointed  to  by  the
     timeout argument may be modified.


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | MT-Safe                     |
    |_____________________________|_____________________________|


SEE ALSO

     alarm(2),   fcntl(2),   poll(2),   read(2),    setitimer(2),
     write(2),   accept(3SOCKET),   listen(3SOCKET),  ualarm(3C),
     attributes(5)


NOTES

     The default value for FD_SETSIZE (currently 1024) is  larger
     than  the  default  limit  on  the  number of open files. To
     accommodate 32-bit applications that  wish to use  a  larger
     number  of  open  files  with  select(),  it  is possible to
     increase this size at compile time  by  providing  a  larger
     definition   of  FD_SETSIZE  before  the  inclusion  of  any
     system-supplied  header.  The  maximum  supported  size  for
     FD_SETSIZE  is 65536. The default value is already 65536 for
     64-bit applications.

Man(1) output converted with man2html