select()¶
Purpose¶
Waits for readiness on a small set of file descriptors using fd_set bit masks.
Header¶
Prototype¶
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
Parameters¶
nfds: highest fd value plus one.readfds: fds monitored for readability.writefds: fds monitored for writability.exceptfds: exceptional conditions.timeout: maximum wait time, orNULLto block indefinitely.
Return Value¶
- Success: returns number of ready fds.
- Timeout: returns
0. - Failure: returns
-1and setserrno.
Minimal Example¶
Common Pitfalls¶
fd_setis modified byselect(), so rebuild it before each call.FD_SETSIZElimits how many fd numbers can be represented.- Prefer
poll()orepoll()for scalable event loops.