int select(int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout);
返回:若有就绪描述符则为其数目,若超时则为0,若出错则为-1
maxfd 表示的是待测试的描述符基数,它的值是待测试的最大描述符加 1。
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);
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
1、将timeval置为空,表示如果没有IO事件发生就将一直等待下去
2、表示一段固定的时间后,select从阻塞调用中返回
3、将tv_sec和tv_usec都置为0,表示不等待,立即返回