【網絡編程】I/O複用函數

I/O複用使得程序可以同時監聽和處理多個文件描述符,提升程序的效率。主流的系統調用主要有select,poll和epoll。數組

select

系統調用原型

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

  1. FD_ZERO(fd_set *fdset) —— 清除fdset全部的位
  2. FD_SET(int fd, fd_set *fdset) —— 設置fd位
  3. FD_CLR(int fd, fd_set *fdset) —— 清除fd位
  4. int FD_ISET(int fd, fd_set *fdset) —— 測試fd位是否被設置
相關文章
相關標籤/搜索