PIPIONE
int select (int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval * timeout); Return >0:就绪描述字的正数目 -1:出错 0 :超时 struct timeval{ long tv_sec; // seconds long tv_usec; // microseconds } 1. 永远等下去:仅在有一个描述字准备好I/O时返回。置为NULL 2. 等待一段固定时间:在有一个描述字准备好I/O时返回,但不超过由该参数所指向的timeval结构中指定的秒数和微秒数。 3. 不等待:检查完描述字后立即返回,称之为轮询(polling)。该参数必须指向一共timeval结构,其中的定时器值为0(秒数和微秒数)。 readset writeset exceptset指定我们要让内核测试读、写和异常条件的描述字。如果对某一个的条件不感兴趣,就可以把它设为NULL。如果三个指针都为NULL,我们就有了一个比sleep()函数更为精确的定时器(sleep()以秒为最小单位,这个以微妙为单位)。