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

相关推荐
特立独行的猫a4 分钟前
11款常用C++在线编译与运行平台推荐与对比
java·开发语言·c++
笑鸿的学习笔记10 分钟前
qt-C++笔记之setCentralWidget的使用
c++·笔记·qt
武汉唯众智创26 分钟前
高职院校“赛岗课”一体化网络安全实战类人才培养方案
网络·安全·web安全·网络安全·“赛岗课”一体化·赛岗课
比奥利奥还傲.30 分钟前
Linux运维安全新范式:基于TCPIP与SSH密钥的无密码认证实战
linux·运维·安全
绝无仅有41 分钟前
企微审批对接错误与解决方案
后端·算法·架构
VBA63371 小时前
VBA之Word应用第三章第十一节:Document对象的事件
开发语言
wjs20241 小时前
SOAP Header 元素
开发语言
Super Rookie1 小时前
Spring Boot 企业项目技术选型
java·spring boot·后端
来自宇宙的曹先生1 小时前
用 Spring Boot + Redis 实现哔哩哔哩弹幕系统(上篇博客改进版)
spring boot·redis·后端
无限远的弧光灯1 小时前
c语言学习_函数递归
c语言·开发语言·学习