IO多路复用Select epool编程20210222

select模型

系统提供select函数来实现多路复用输入/输出模型。
select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是stdin、stdout、stderr。

int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);
struct timeval  
{
    
      
    time_t tv_sec;//second  
    time_t tv_usec;//minisecond  
}; 
  • maxfdp:被监听的文件描述符的总数,它比所有文件描述符集合中的文件描述符的最大值大1,因为文件描述符是从0开始计数的;
  • readfds、writefds、exceptset:分别指向可读、可写和异常等事件对应的描述符集合。
  • timeout:用于设置select函数的超时时间,即告诉内核select等待多长时间之后就放弃等待。timeout == NULL,表示等待无限长的时间

猜你喜欢

转载自blog.csdn.net/Narutolxy/article/details/113945120