1、Select函数原型
#include <sys/select.h>
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout);
函数参数:
int nfds:监听的文件描述符中最大文件描述符加1,告诉内核需要检测文件描述符的个数;
readfds:监听有读数据到达文件描述符集合,传入传出参数;
writefds:监听有写数据到达文件描述符集合,传入传出参数;
exceptfds:监听异常发生到达文件描述符集合,传入传出参数;
timeout:监听阻塞时间,NULL为永远等待;设置timeval,等待设置时间;timeval设置为0,检查描述符后立即返回;
对于 fd_set类型的变量我们可以使用以下几个宏来控制它:
void FD_CLR(int fd, fd_set *set) ; 将文件描述符中fd位清0