IO多路转接 —— 认识 poll 函数

本文详细介绍了poll函数的工作原理,包括其参数配置、事件类型及返回值等,并通过实例展示了如何使用poll模型监听标准输入。

目录

一、认识 poll 函数

1、第三个参数 timeout

2、第一、第二个参数

(1) 认识 pollfd 结构体类型

(2) 添加关注事件 / 判断事件是否就绪

3、返回值

二、使用poll模型监听标准输入


select模型的实现基于select函数,poll模型的实现也是基于 poll函数,poll可以看作是select的升级版,在功能层面是一样的,都是只负责等待事件就绪,不参与拷贝过程。

一、认识 poll 函数

poll函数的作用是等待某些事件是否就绪,函数声明如下:

1、第三个参数 timeout

这个参数是一个输入型参数,单位是毫秒,代表阻塞等待的时间,超过该时间就会变为非阻塞等待。

  • timeout = -1,代表永久阻塞等待
  • timeout = 0,代表永久非阻塞等待
  • timeout > 0,代表先阻塞等待 timeout 毫秒,超过这个时间变为非阻塞等待,poll函数返回

2、第一、第二个参数

为了记录哪些文件描述符需要被关注,我们一般会将这些文件描述符放到一个数组里。

  • 第一个参数:这个数组的元素首地址,元素类型是pollfd 结构体类型
  • 第二个参数:需要关注的文件描述符的数目。如果有多个文件描述符,我们可以通过这个参数来遍历数组中的文件描述符。

(1) 认识 pollfd 结构体类型

pollfd结构体包含了每一个需要内核关注的文件描述符的信息,比如这个文件描述符需要关注什么事件、有什么事件已经就绪了等等。pollfd 的结构体声明如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值