1. #include <sys/time.h>
    2. #include <sys/types.h>
    3. #include <unistd.h>
    4. int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout);

    参数:
    1.nfds
    所有监控的文件描述符中最大的那一个加1
    2.readfds:读集合
    所监听的文件描述符可读事件
    3.writefds:写集合
    所监听的文件描述符可写事件
    4.exceptfds:异常集合
    所监听的文件描述符异常事件
    5.timeout:超时
    –超时设置.
    –Null:一直阻塞,直到有文件描述符就绪或出错
    –时间值为0:仅仅检测文件描述符集的状态,然后立即返回
    –时间值不为0:在指定时间内,如果没有事件发生,则超时返回

    1. struct timeval
    2. {
    3. long tv_sec;//秒
    4. long tv_usec;//微秒
    5. }

    返回值:
    成功:所监听的所有的 监听集合中,满足条件的总数
    失败:0

    image.png注:select退出后:集合表示有数据的集合