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

相关推荐
枫叶丹41 分钟前
【Qt开发】Qt界面优化(十)->常用控件--复选框
c语言·开发语言·c++·qt
野生工程师1 分钟前
【Linux基础】CentOS Stream10详细安装教程
linux·运维·centos
宵时待雨2 分钟前
C++笔记归纳9:模板进阶
开发语言·数据结构·c++·笔记
爱装代码的小瓶子6 分钟前
【c++与Linux进阶】轻量化进程与虚拟地址和页表
linux·开发语言·c++
Lin_林10 分钟前
国内 Docker 服务状态 & 镜像加速监控
java·开发语言
weixin_6495556711 分钟前
C语言程序设计第四版(何钦铭、颜晖)第八章之字符串压缩
c语言·数据结构·算法
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧18 分钟前
Java 集合 (Collection)
java·开发语言
一直都在57220 分钟前
Java基础面经(二)
java·开发语言
liurunlin88820 分钟前
Linux系统安装部署Tomcat
linux·运维·tomcat
tingting011921 分钟前
linux系统-统计连接数-钉钉告警
linux·数据库·钉钉