• I/O多路复用之poll


    poll函数和select函数非常相似,但是函数接口不一样。

    #include <poll.h>

    int poll(struct pollfd *fdarray, unsigned long nfds, int timeout);

     返回:就绪描述字的个数,0-超时,-1-出错

    第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个pollfd结构,用于指定测试某个给定描述字fd的条件。

      struct pollfd{

      int fd;              //descriptor to check

      short events;    //events of interest on fd

      short revents;   //events that occurred on fd

      };

    测试的条件由events成员指定,而返回的结果则在revents中存储。常用条件及含意说明如下:

    poll函数可用的测试值

    常量 说明
    POLLIN 普通或优先级带数据可读
    POLLRDNORM 普通数据可读
    POLLRDBAND 优先级带数据可读
    POLLPRI 高优先级数据可读
    POLLOUT 普通数据可写
    POLLWRNORM 普通数据可写
    POLLWRBAND 优先级带数据可写
    POLLERR 发生错误
    POLLHUP 发生挂起
    POLLNVAL 描述字不是一个打开的文件

     注意:后三个只能作为描述字的返回结果存储在revents中,而不能作为测试条件用于events中。

    第二个参数nfds是用来指定数组fdarray的长度。

    最后一个参数timeout是指定poll函数返回前等待多长时间。它的取值如下:

     

    timeout值 说明
    INFTIM 永远等待
    0 立即返回,不阻塞进程
    >0 等待指定数目的毫秒数

  • 相关阅读:
    洛谷——P2018 消息传递
    洛谷——P2827 蚯蚓
    洛谷——P1120 小木棍 [数据加强版]
    洛谷——P1168 中位数
    洛谷——P1850 换教室
    Kali-linux使用Metasploit基础
    Kali-linux使用Metasploitable操作系统
    Kali-linux使用OpenVAS
    Kali-linux使用Nessus
    Kali-linux绘制网络结构图
  • 原文地址:https://www.cnblogs.com/shihaochangeworld/p/5747826.html
Copyright © 2020-2023  润新知