select函数实现服务端多路复用

多路复用select函数

函数介绍

函数原型

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

参数nfds:所有文件描述符的最大值加1

参数readfds/writefds/exceptfds: 读/写/错误 集合

读集合

写集合

错误集合

readfds

writefds

exceptfds

参数timeout: 表示select的等待时间

返回值:文件描述符个数

select函数的执行过程

传递给select函数的参数会告诉内核以下信息:

(1)文件描述符(select函数监视的文件描述符分三类,分别是writefds、readfds和exceptfds)。

(2)每个描述符的状态(是想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常)。

(3)要等待的时间(可以等待无限长的时间,等待固定的一段时间,或者根本就不等待)。

从select函数返回后,内核会告诉我们以下信息:

(1)对我们的要求已经做好准备的描述符的个数。

(2)对于三种条件哪些描述符已经做好准备(读、写、异常)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值