select API的主旨思想

  1. 首先构造一个关于文件描述符的列表,将要监听的文件描述符添加到该列表中。
  2. 调用一个系统函数(select),监听该列表中的文件描述符,直到这些描述符中的一个或者多个进行I/O操作时,该函数才返回。
  3. 在返回时,它会告诉进程有多少(哪些)描述符要进行I/O操作

select函数

Untitled

select

<aside> 💡 select 监听一个列表的文件描述符,直到列表中某个文件描述符进行IO操作时返回

</aside>

参数

返回值

其余对 fd_set 进行操作的函数

// 将参数文件描述符fd对应的标志位设置为0
void FD_CLR(int fd, fd_set *set);

// 将参数文件描述符fd对应的标志位设置为1
void FD_SET(int fd, fd_set *set);

// 判断fd对应的标志位是0还是1,返回fd对应的标志位的值,0:返回0; 1:返回1
int FD_ISSET(int fd, fd_set *set);

// fd_set一共有1024 bit, 全部初始化为0
void FD_ZERO(fd_set *set);

select工作流程示例