1.设置套接字为非阻塞模式 int fcntl(int fd,int cmd,long arg);
2.初始化描述符集 void FD_ZERO(fd_set *fdset);
3.将一个描述符添加到描述符集 void FD_SET(int fd, fd_set *fdset);
4.将一个描述符从描述符集中删除 void FD_CLR(int fd, fd_set *fdset);
5.检测指定的描述符是否有事件发生 int FD_ISSET(int fd, fd_set *fdset);
#include<sys/select.h>
6.select函数
int select(int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout);
返回值为0超时、返回值为-1出错,返回值大于0表示准备好的文件描述符数量