Linux C语言中对文件描述符的操作宏(FD_ZERO、FD_SET、FD_CLR、FD_ISSET)fd_set结构体、select()函数简介
文章目录
“FD”即为file descriptor
fd_set 结构体:可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄。
- FD_ZERO
用法:FD_ZERO(fd_set*);
用来清空fd_set集合,即让fd_set集合不再包含任何文件句柄。 - FD_SET
用法:FD_SET(int ,fd_set *);
用来将一个给定的文件描述符加入集合之中 - FD_CLR
用法:FD_CLR(int ,fd_set*);
用来将一个给定的文件描述符从集合中删除 - FD_ISSET
用法:FD_ISSET(int ,fd_set*);
检测fd在fdset集合中的状态是否变化,当检测到fd状态发生变化时返回真,否则,返回假(也可以认为集合中指定的文件描述符是否可以读写)。 - 函数select
用法:int select(int maxfdp, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
作用:用来够监视我们需要监视的文件描述符(读或写的文件集中的文件描述符)的状态变化情况。并能通过返回的值告知我们。
参数解释:
int maxfdp
:集合中所有文件描述符的范围,为所有文件描述符的最大值加1。
fd_set *readfds
:要进行监视的读文件集。
fd_set *writefds
:要进行监视的写文件集。
fd_set *errorfds
:用于监视异常数据。
struct timeval* timeout
:select的超时时间,它可以使select处于三种状态:
第一,若将NULL以形参传入,即不传入时间结构,就是将select置于阻塞状态,一定等到监视文件描述符集合中某个文件描述符发生变化为止;(文件描述符发生变化是什么意思?指由不可写可读变成可读可写??
)
第二,若将时间值设为0秒0毫秒,就变成一个纯粹的非阻塞函数, 不管文件描述符是否有变化,都立刻返回继续执行,文件无变化返回0,有变化返回一个正值;
第三,timeout的值大于0,这就是等待的超时时间,即 select在timeout时间内阻塞,超时时间之内有事件到来就返回了,否则在超时后不管怎样一定返回。
返回值介绍:
>0
:被监视的文件描述符有变化
-1
:出错
0
:超时
参考文章:Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
Linux C语言中对文件描述符的操作宏(FD_ZERO、FD_SET、FD_CLR、FD_ISSET)fd_set结构体、select()函数简介相关推荐
- Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描述符.读写文件也需要使用文件描述符来指定 ...
- Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介
原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...
- Linux中的文件描述符与打开文件之间的关系
1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是 ...
- linux c中的文件描述符与打开文件之间的关系
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通 ...
- 理解Unix/Linux系统中的文件描述符
简介 文件描述符是针对Unix/Linux的每个进程而言的,每个进程都维护了一个文件指针表,指针指向操作系统的文件.这里的文件是指的Unix/Linux系统所说的文件,Unix/Linux下一切皆文件 ...
- linux内核中的文件描述符(四)--fd的分配--get_unused_fd
linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...
- linux内核中的文件描述符(一)--基础知识简介
linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...
- linux内核中的文件描述符(三)--fd的回收
linux内核中的文件描述符(三)--fd的回收 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csd ...
- Linux系统学习笔记:文件描述符标志
文件描述符标志的概念 文件描述符标志(目前就只有一个close-on-exec): 它仅仅是一个标志,当进程fork一个子进程的时候,在子进程中调用了exec函数时就用到了这个标志.意义是执行exec ...
- Linux的辅助数据和传递文件描述符
简介 首先,明确传递文件描述符的意义.一般来说,在多进程网络编程中,我们设置一个主进程用于监听新来的连接,设置一个进程池,用于处理这些连接.但是,与线程池不同,进程池各个进程之间的空间是独立的,直接共 ...
最新文章
- ML-2 机器学习算法
- 差分约束系统之Bellman_Ford与Spfa判断负权回路
- python函数调用的一般形式_Python的函数的定义与使用示例
- 设计模式系列:小小总结
- tableau两个不同的图合并_举个栗子!Tableau技巧(59):学做两个集合的维恩图(文氏图)Venn diagram...
- 在线等差数列求和计算器
- outlook 附件保存位置-附件无法打开
- linux的一些目录结构
- 毕业论文学术报告答辩开题报告PPT模板
- goldwave教程分享:用GoldWave进行音量调节
- Flutter学习笔记 数据储存shared_preferences
- 42表盘直径是从哪测量_手表尺寸怎么选择 手表尺寸怎么测量
- mc服务器文件夹改皮肤,我的世界皮肤放在哪个文件夹位置及更换方法解析
- Zepto中touch模块的使用(移动端)
- material-table的使用
- 深入浅出Spring源码:IOC原理解析(一)
- godspeed机器人_来自深渊(KINEMA CITRUS改编的电视动画作品)_百度百科
- 数据库入门---mysql
- @2022-02-22:每日一语
- Div CSS网页布局对网站搜索引擎优化的影响