fd_set与select
来源:互联网 发布:mysql 执行脚本文件 编辑:程序博客网 时间:2024/05/05 22:01
select()函数原型中,用到了很多fd_set*这样的指针变量。当我学习的时候,不是很理解这种写法到底是什么意思。
int select(int nfds, fd_set* readset, fd_set* writeset, fe_set* exceptset, struct timeval* timeout);这是我们熟知的select函数原型,这个函数可以做到很好的监听作用,监听读、写、报错、设置监听时间。但是看到那么多的set_fd*指针时,我迷茫了,刚开始,我只是可根据fd来推测出这是一个文件描述符。后来通过学习发现,这是一个宏定义数组,其中有很多数组可以定义,可以根据自己的需要进行设置。譬如说,我们只想监听函数的写操作时,函数定义如下:
int select(1, NULL, &fdset, NULL, &tv);我们只需要把相应写操作那写入参数地址即可。
但是如何定义fdset呢,这就是fd_set()函数的功能了。在调用select()函数前,需要先对fdset进行定义。
Linux内核中,给我们提供了4个fd_set操作宏,FD_ZERO();FD_SET();FD_CLR();FD_ISSET();我们可根据自身的需要对其进行一一操作。最后将fdset地址写入select函数即可。
以此类推,也可以完成单独的读、写、错误,或者一些复合的IO操作。阅读全文
0 0
- fd_set与select
- fd_set与select(转)
- select 与 fd_set
- select 与 fd_set
- select 与 fd_set
- fd_set与select
- fd_set select
- select系统调用与FD_SET,FD_ISSET,FD_ZERO
- select系统调用与FD_SET,FD_ISSET,FD_ZERO
- select 和 struct fd_set
- Linux: fd_set和select()
- FD_SET,FD_ISSET,FD_ZERO,select
- select()和fd_set
- FD_SET,FD_ISSET,FD_ZERO,select
- linux select和fd_set
- select机制中FD_SET
- fd_set & select函数学习
- select函数及fd_set
- QT程序文本转语音播放
- Linux 动态库剖析
- ThinkPHP5.1 路由地址中组合变量规则的使用
- Android反编译-揭秘猎豹设置默认浏览器逻辑
- svn冲突问题详解 SVN版本冲突解决详解
- fd_set与select
- “能做”和“去做”
- mybatis输出sql log
- ELK第七篇:spring-boot-starter-data-elasticsearch使用
- 分布式环境指挥官Zookeeper—架构师必备技能分布式锁解密
- spring中手动实现AOP编程
- 解决ubuntu下make menuconfig错误问题
- 8.2
- JAVAWEB第五天XML简介及语法