select函数是怎么用的

文章详细介绍了select函数的工作流程,包括如何监控文件描述符,特别是键盘和鼠标事件。在TCP服务器中,利用select实现并发处理多个客户端连接,同时关注键盘输入。还提到了select的限制,如最大监听数量、效率问题和每次调用后需重新设置文件描述符集。

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

其基本流程是:

1. 先构造一张有关文件描述符的表(集合、数组);

2. 将你关心的文件描述符加入到这个表中;

3. 然后调用一个函数。 select / poll

4. 当这些文件描述符中的一个或多个已准备好进行I/O操作的时候

该函数才返回(阻塞)。

5. 判断是哪一个或哪些文件描述符产生了事件(IO操作);

6. 做对应的逻辑处理;

注意:

****select函数返回之后,会自动将除了产生事件的文件描述符以外的位全部清空;

这样当你想下一次监听其它的事件的话,都被清空了,就监听不到了,所以写代码的时候,要定义一个临时的集合,所以在调用select之前要把原有的readfds付给临时tempfds。

任务:

我想检测是键盘事件(标准输入 文件描述如为0 ),

还是鼠标事件(文件描述符是/dev/input/mouse1);

【4】select

/* According to POSIX.1-2001 */

       #include

       /* According to earlier standards */

       #include

       #include

       #include

       int select(int nfds, fd_set *readfds, fd_set *writefds,

                  fd_s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值