函数原型:
nt select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
nfds为readfds, writefds, exceptfds中的fd最大值加1。
timeout的三种情况:
1. NULL
永远等待
2. timeout->tv_sec == 0 && timeout->tv_usec == 0
完全不等待
3. timeout->tv_sec != 0 || timeout->tv_usec != 0
等待特定的秒数和微妙数
返回值的三种情况:
1. -1
发生错误, errno被设置
2. 0
等待超时
3. >0
已经准备好的事件数