【计算机网络】多路转接之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

相关推荐
万山寒5 小时前
linux日志查询,查找某个关键词后面的内容
linux·运维·服务器
Z.风止5 小时前
Large Model-learning(3)
人工智能·笔记·后端·深度学习
Moe4885 小时前
Spring AI Advisors:从链式增强到递归顾问
java·后端
房开民5 小时前
ubuntu中安装claude code
linux·运维·ubuntu
Bert.Cai5 小时前
Linux mv命令详解
linux·运维
37手游后端团队5 小时前
Claude Code 指南:终端 AI 编程助手的正确打开方式
人工智能·后端
无限进步_6 小时前
【C++】只出现一次的数字 II:位运算的三种解法深度解析
数据结构·c++·ide·windows·git·算法·leetcode
网域小星球6 小时前
C 语言从 0 入门(十七)|结构体指针 + 动态内存 + 文件综合实战
c语言·开发语言·文件操作·结构体指针·动态内存·综合项目
aq55356006 小时前
三大编程语言深度对比:C# vs 易语言 vs 汇编
开发语言·汇编·c#
头铁的伦6 小时前
QNX 网络模型
linux·网络·车载系统