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

相关推荐
Dragon~Snow1 分钟前
Linux server CentOS stream 10系统构建
linux·运维·centos
喵个咪8 分钟前
RushWind Admin — 用 Rust 写的企业级中后台,开源了
后端·rust·开源
霞姐聊IT8 分钟前
服务器RAS软件开发经验分享——从Linux、BMC与BIOS三个层面谈工程实践(二)
linux·服务器
喵个咪9 分钟前
RushWind Admin — 契约驱动:203 条路由零手写的工程化拆解
后端·rust·开源
明月_清风12 分钟前
只会 Vibe Coding 的程序员,为什么可能会被淘汰?
后端·ai编程
重生之我是小技12 分钟前
独享代理IP与共享代理IP的核心区别
网络
喵个咪29 分钟前
Go 写业务,Rust 扛底盘:一套可落地的混合架构
后端·rust·go
高山有多高30 分钟前
【Linux笔记】Linux磁盘文件系统
linux
晓蛋33 分钟前
二级C语言成绩查询方法
c语言·计算机等级考试·成绩查询·官网登录·准考证号
几何心凉41 分钟前
嵌入式Linux系统开发21天速成:从基础开发到综合项目实战
linux·运维·服务器