select的用法

来源:互联网 发布:mac怎么连接云服务器 编辑:程序博客网 时间:2024/06/06 04:39

1、头文件

    #include <sys/select.h>

    #include <sys/types.h>

    #include <sys/time.h>

    #include <unistd.h>

2、相关函数和宏

    int select(int nfds, fs_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

    void FD_CLR(int fd, fd_set *set);

    int FD_ISSET(int fd, fd_set *set);

    void FD_SET(int fd, fd_set *set);

    void FD_ZERO(fd_set *set); 

3、功能描述

    select会一直监视多个文件描述符的状态,直到某个或者某几个文件描述变为可用时返回;或者超时返回。

    select函数的参数nfds是所有文件描述符中最大值再加上1;参数timeout是select返回之前等待的最长时间,当timeout结构体中的两个成员变量值都为0时,select函数立即返回。

    四个宏的定义如下:

    FD_CLR把一个文件描述符从set中删除。

    FD_SET把一个文件描述符设置到set中。

    FD_ZERO清空set。

    FD_ISSET测试某个文件描述符是否在某个set中,此宏可用在select返回后。

4、返回值

    如果成功,返回三种set中文件描述符的数量;如果失败,返回-1,这时三种FD_SET和timeout都变为未定义的,所以如果有错误发生,不应该再以它们的值作为判断依据。

原创粉丝点击