文章目录

“FD”即为file descriptor

fd_set 结构体:可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄。

  1. FD_ZERO
    用法:FD_ZERO(fd_set*);
    用来清空fd_set集合,即让fd_set集合不再包含任何文件句柄。
  2. FD_SET
    用法:FD_SET(int ,fd_set *);
    用来将一个给定的文件描述符加入集合之中
  3. FD_CLR
    用法:FD_CLR(int ,fd_set*);
    用来将一个给定的文件描述符从集合中删除
  4. FD_ISSET
    用法:FD_ISSET(int ,fd_set*);
    检测fd在fdset集合中的状态是否变化,当检测到fd状态发生变化时返回真,否则,返回假(也可以认为集合中指定的文件描述符是否可以读写)。
  5. 函数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()函数简介相关推荐

  1. Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET

    在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描述符.读写文件也需要使用文件描述符来指定 ...

  2. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  3. Linux中的文件描述符与打开文件之间的关系

    1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是 ...

  4. linux c中的文件描述符与打开文件之间的关系

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述     在Linux系统中一切皆可以看成是文件,文件又可分为:普通 ...

  5. 理解Unix/Linux系统中的文件描述符

    简介 文件描述符是针对Unix/Linux的每个进程而言的,每个进程都维护了一个文件指针表,指针指向操作系统的文件.这里的文件是指的Unix/Linux系统所说的文件,Unix/Linux下一切皆文件 ...

  6. linux内核中的文件描述符(四)--fd的分配--get_unused_fd

    linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...

  7. linux内核中的文件描述符(一)--基础知识简介

    linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...

  8. linux内核中的文件描述符(三)--fd的回收

    linux内核中的文件描述符(三)--fd的回收 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csd ...

  9. Linux系统学习笔记:文件描述符标志

    文件描述符标志的概念 文件描述符标志(目前就只有一个close-on-exec): 它仅仅是一个标志,当进程fork一个子进程的时候,在子进程中调用了exec函数时就用到了这个标志.意义是执行exec ...

  10. Linux的辅助数据和传递文件描述符

    简介 首先,明确传递文件描述符的意义.一般来说,在多进程网络编程中,我们设置一个主进程用于监听新来的连接,设置一个进程池,用于处理这些连接.但是,与线程池不同,进程池各个进程之间的空间是独立的,直接共 ...

最新文章

  1. ML-2 机器学习算法
  2. 差分约束系统之Bellman_Ford与Spfa判断负权回路
  3. python函数调用的一般形式_Python的函数的定义与使用示例
  4. 设计模式系列:小小总结
  5. tableau两个不同的图合并_举个栗子!Tableau技巧(59):学做两个集合的维恩图(文氏图)Venn diagram...
  6. 在线等差数列求和计算器
  7. outlook 附件保存位置-附件无法打开
  8. linux的一些目录结构
  9. 毕业论文学术报告答辩开题报告PPT模板
  10. goldwave教程分享:用GoldWave进行音量调节
  11. Flutter学习笔记 数据储存shared_preferences
  12. 42表盘直径是从哪测量_手表尺寸怎么选择 手表尺寸怎么测量
  13. mc服务器文件夹改皮肤,我的世界皮肤放在哪个文件夹位置及更换方法解析
  14. Zepto中touch模块的使用(移动端)
  15. material-table的使用
  16. 深入浅出Spring源码:IOC原理解析(一)
  17. godspeed机器人_来自深渊(KINEMA CITRUS改编的电视动画作品)_百度百科
  18. 数据库入门---mysql
  19. @2022-02-22:每日一语
  20. Div CSS网页布局对网站搜索引擎优化的影响

热门文章

  1. C语言解决百钱买百鸡问题
  2. 面试官:MVCC是如何实现的?
  3. WebGoat (A1) SQL Injection (mitigation)
  4. 手把手教会你安装Ubuntu虚拟机(保姆级教程)
  5. mysql删除了ibdata1后恢复数据库
  6. 学不进去?可以试着这么做……
  7. 聚类算法--DBSCAN算法
  8. android使用友盟推送注册失败获取不到token accs bindapp error!
  9. IDEA使用教程—1、安装及破解
  10. 使用Mysql实现QQ数据库管理