I/O复用——一个进程或线程能同时对多个文件描述符(socket)提供服务。
select
-
记录每种时间的结构,在数组按位来记录关注的文件描述符上的事件
-
每次最多可以监听1024个文件描述符,并且其最大值是1023
-
select函数返回时,通过传递的结构体变量将结果带回,并且内核会修改用户变量
int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *execfds,struct timeval *timeout);
nfds:最大文件描述符的值+1(为了提高select底层调用的效率)
readfds:用户感兴趣的可读事件的文件描述符集合
writefds:可写事件的文件描述符集合
execfds:异常事件的文件描述符集合
timeout:设置超时时间,如果timeout为NULL,则select一直阻塞
返回值:-1 出错,返回值为0 时超时,返回值>0时,返回的是就绪的文件描述符个数
每次sele