I/O复用

I/O复用是一种处理多个描述符的技术,包括select、poll和epoll。select用于监听可读性、可写性、异常条件,通过fds_bits结构管理描述符;poll使用pollfd结构体数组,每个元素指定文件描述符及监听状态;epoll是Linux特有,使用epoll_ctl和epoll_wait进行事件注册和等待,效率较高,支持边沿触发模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是I/O复用?

       什么是I/O复用(I/O multiplexing)呢?具体点就是当你编写的程序需要同时处理多个描数字(socket或file或device),你又不知道什么时候应该(比方说有数据可以读了)去操作(读/写)哪个描数字。这时候I/O复用就需要登场了。

      I/O复用是一种让进程预先“警告”内核能力,使得内核一旦发现进程预先告知时指定的一个或多个I/O条件(就是描述符)就绪(可以读/写了),内核就通知进程。linux有3个调用可实现I/O复用:select、poll,epoll。

select

select()系统调用提供了一种实现同步 I/O 多路复用的机制:

函数头文件: #include <sys/select.h>

函数原型:

 int select (int nfds, fd_set *readfds,fd_set *writefds, fd_set *exceptfds,struct timeval *timeout);

  • nfds:监听的最大的文件描述符的值+1   

readfds    用来检查可读性的一组文件描述字。                                                                                                                            writefds    用来检查可写性的一组文件描述字。                                                                                                                        exceptfds  用来检查是否有异常条件出现的文件描述字。(注:错误不包括在异常条件之内)

  • sele
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值