I/O复用使得程序可以同时监听和处理多个文件描述符,提升程序的效率。主流的系统调用主要有select,poll和epoll。数组
int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* expectfds, struct timeval* timeout);
其中,nfds为select监听的最大文件描述符个数+1,fd_set是一个数据结构,其本质上是一个整形数组,数组中的每个位都标记一个文件描述符,而fd_set的容量是由内核决定的,即select能同时处理的文件数量是有限的。
fd_set操做的一些宏定义:数据结构