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操做的一些宏定義:數據結構