.TH SELECT 2 2/12/83 .SH NAME select \- synchronous i/o multiplexing .SH SYNOPSIS .nf .ft B #include <time.h> .PP .ft B nfds = select(nfds, readfds, writefds, execptfds, timeout) int nfds, *readfds, *writefds, *execptfds; struct timeval *timeout; .fi .SH DESCRIPTION .I Select examines the i/o descriptors specified by the bit masks .IR readfds , .IR writefds , and .I execptfds to see if they are ready for reading, writing, or have an exceptional condition pending, respectively. File descriptor .I f is represented by the bit \*(lq1<<f\*(rq in the mask. .I Select returns, in place, a mask of those descriptors which are ready. The total number of ready descriptors is returned in .IR nfds . .PP If .I timeout is a non-zero pointer, it specifies a maximum interval to wait for the selection to complete. If .I timeout is a zero pointer, the select blocks indefinitely. To affect a poll, the .I timeout argument should be non-zero, pointing to a zero valued timeval structure. .PP Any of .IR readfds , .IR writefds , and .I execptfds may be given as 0 if no descriptors are of interest. .SH "RETURN VALUE .I Select returns the number of descriptors which are contained in the bit masks, or \-1 if an error occurred. If the time limit expires then \Iselect\fP returns 0. .SH "ERRORS An error return from \fIselect\fP indicates: .TP 15 [EBADF] One of the bit masks specified an invalid descriptor. .TP 15 [EINTR] An signal was delivered before any of the selected for events occured or the time limit expired. .SH SEE ALSO accept(2), connect(2), read(2), write(2), recv(2), send(2)