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

相关推荐
霸道流氓气质几秒前
Java中集成Weka 技术教程:从入门到工程实践
java·开发语言·数据挖掘
Full Stack Developme1 分钟前
SpringBoot 内嵌 Tomcat 的启动流程
spring boot·后端·tomcat
buhuizhiyuci15 分钟前
【Linux 篇】数字世界的通信管道 —— 匿名管道与进程池深度实战解析
linux·运维·服务器
IT_陈寒20 分钟前
Vue的这个响应式陷阱,我调试了一整天才爬出来
前端·人工智能·后端
snow@li20 分钟前
Spring 项目 Java 访问修饰符 + 非访问修饰符全景梳理详解
java·后端·spring
大模型念念28 分钟前
Spring 框架入门:从零开始构建你的第一个应用
java·后端·spring
SilentSlot31 分钟前
【C/C++】手写 DPDK 协议栈(十二):TCP 并发与自实现 epoll 的就绪事件分发
c语言·c++·tcp/ip
雨落在了我的手上35 分钟前
Java数据结构(九):栈和队列
java·开发语言·数据结构
卷无止境36 分钟前
Python 相对导入与绝对导入的坑:从原理到工程实践
后端·python
无锡耐特森38 分钟前
ModbusTCP转Profinet:打通潜油电泵工业互联新路径
linux·运维·服务器