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)

NAME

select − synchronous i/o multiplexing

SYNTAX

#include <sys/time.h>

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

DESCRIPTION

The select system call examines the I/O descriptors specified by the bit masks readfds, writefds, and execptfds to see if they are ready for reading, writing, or have an exceptional condition pending, respectively.  The I/O descriptors can be pointers to arrays of integers if multiple fd’s are required to be selected.  File descriptor f is represented by the bit “1<<f” in the mask.  The nfds descriptors are checked, that is the bits from 0 through nfds-1 in the masks are examined. The select system call 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 affect a poll, the timeout argument should be non-zero, pointing to a zero valued timeval structure. 

Any of readfds, writefds, and execptfds may be given as 0 if no descriptors are of interest. 

The select system call returns the number of descriptors which are contained in the bit masks, or −1 if an error occurred.  If the time limit expires then select returns 0. 

A socket exception is not defined and therefore execptfds always returns a 0. 

RESTRICTIONS

The descriptor masks are always modified on return, even if the call returns as the result of the timeout. 

DIAGNOSTICS

An error return from select indicates:

[EBADF] One of the bit masks specified an invalid descriptor. 

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

[EINVAL] The specified time limit is unacceptable.  One of its components is negative or too large. 

SEE ALSO

accept(2), connect(2), read(2), recv(2), send(2), write(2)

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