I/O多路转接(select/poll/epoll)
1、I/O多路转接select
系统提供select函数实现多路复用的输入输出模型
select系统调用让程序监视多个文件描述符的状态变化,程序会暂停到select这里等待,直到被监视的文件描述符发送了状态变化
#include<sys/select.h> //头文件
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout )
参数解释:
nfds:用来限定监视区间(最大文件描述符+1)
rdset: 检测读事件的文件描述符集合
wrset:检测写事件的文件描述符集合
exset:检测异常事件的文件描述符集合
timeout:设置select的等待时间
timeout取值
NULL:一直被阻塞直接文件描述发生变化
0:检测文件描述符状态立即返回
特定时间:等待时间
fd_set结构 //位图(取fd_set为一个字节,每一bit对应一个文件描述符fd)
提供操作fd_set的一组接口,来操作位图
void FD_CLR(int<