多路复用的作用是把标准输入,套接字都看作I/O的一路,多路复用的意思,在任何一路有事件发生,通知应用程序去处理相应的I/事件 。
int select(int maxfd,fd_set *readset,fd_set *writeset,fd_set *exceptset,timeval *timeout)
maxfd待测试的描述符基数,
三个描述符集合 读描述集 写 ,异常描述集分别注册进内核
void FD_ZERO(fd_set *fdset);
void FD_SET(int fd, fd_set *fdset);
void FD_CLR(int fd, fd_set *fdset);
int FD_ISSET(int fd, fd_set *fdset);
FD_ZERO 用来将这个向量的所有元素都设置成 0;
FD_SET 用来把对应套接字 fd 的元素,a[fd]设置成 1;
FD_CLR 用来把对应套接字 fd 的元素,a[fd]设置成 0;
FD_ISSET 对这个向量进行检测,判断出对应套接字的元素 a[fd]是 0 还是 1
内核通知套接字有数据可读,就可以使用read