【计算机网络】多路转接之poll

poll也是一种linux中的多路转接方案(poll也是只负责IO过程中的"等")

解决:1.select的fd有上限的问题;2.每次调用都要重新设置关心的fd

一、poll的使用

int poll(struct pollfd * fds**,** nfds_t nfds**,** int timeout**);**


struct pollfd * fds:动态数组(struct pollfd类型的数组)

nfds_t nfds:数组元素个数

int timeout:>0 在timeout以内阻塞,否则非阻塞返回一次;=0 非阻塞等待;<0 阻塞等待

④ 返回值:同select(ret>0:返回有几个fd就绪了;ret==0:超时返回了;ret<0:调用失败)


struct pollfd结构体

struct pollfd { int fd; short events; short revents; };

events 用户告诉内核(输入型):要帮我关心fd的event事件 -> 输入看fd+events

revents 内核告诉用户(输出型):你关心的fd有哪些事已经就绪了 -> 输出看fd+revents

events和revents的取值

二、poll的特点

1.输入输出分离:poll不需要对参数进行重新设定

2.自定义数组个数:解决select等待fd有上限的问题

3.poll需要遍历整个struct pollfd *****fds数组 -> 为了解决这种问题 -> epoll

相关推荐
一位狮子座的程序员12 分钟前
如何用RAG解决AI智能体的知识盲区?
开发语言·c#
XR12345678817 分钟前
学校宿舍区网络方案对比:多终端高并发下的认证、管理与体验
网络
神奇小汤圆20 分钟前
疯了!Fastjson 又爆出严重安全漏洞,Spring Boot 项目赶紧自查
后端
吹什么轩27 分钟前
c++复习:模拟实现list来更好的理解和应用list
开发语言·c++
小白学大数据32 分钟前
Python 爬虫实战:抓取汽车之家二手车成交价格与里程数据
开发语言·爬虫·python·汽车
March.s34 分钟前
IP 存储核心 iSCSI:原理拆解 + 无报错实战指南
网络·网络协议·tcp/ip
AmyLin_200134 分钟前
PDF 色彩保真工程实践【5】核心实现(下):拼装 Image XObject、页面资源与内容流
c++·pdf·sdk·颜色空间·印刷·icc·cmyk
深盾科技_Virbox43 分钟前
软件加密工具怎么选:试用验证、采购成本与授权范围
开发语言·安全·软件需求
自进化Agent智能体1 小时前
Hermes CLI 界面详解——命令行交互全攻略
后端
A_cainiao_A1 小时前
C++20:std::stop_source让线程说停就听
开发语言·c++20