【网络编程】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位是否被设置

你可能感兴趣的:(c服务器c++后端)