当前位置: 首页 > news >正文

select函数

系统调用 select()可用于执行 I/O 多路复用操作,调用 select()会一直阻塞,直到某一个或多个文件描述符成为就绪态(可以读或写)。其函数原型如下所示:

#include <sys/select.h>
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

⚫ 参数nfds通常表示最大文件描述符编号值+1,考虑 readfds、writefds 以及 exceptfds

这三个文件描述符集合,在 3 个描述符集中找出最大描述符编号值,然后加 1;

参数 readfds、writefds 以及 exceptfds 都是 fd_set 类型指针,

指向一个 fd_set 类型对象,fd_set 数据类型是一个文件描述符的集合体,所以参数readfds、writefds 以及exceptfds 都是指向文件描述符集合的指针,这些参数按照如下方式使用:

⚫ readfds :传入传出参数:是用来检测读是否就绪(是否可读)的文件描述符集合;

⚫ writefds:传入传出参数: 是用来检测写是否就绪(是否可写)的文件描述符集合;不使用可以指定为NULL

⚫ exceptfds :传入传出参数:是用来检测异常情况是否发生的文件描述符集合。不使用可以指定为NULL

Tips:异常情况并不是在文件描述符上出现了一些错误。

Linux 提供了四个宏用于对 fd_set 类型对象进行操作,所有关于文件描述符集合的操作都是通过这四个宏来完成的:FD_CLR()、FD_ISSET()、FD_SET()、FD_ZERO()

http://www.lryc.cn/news/523536.html

相关文章:

  • 建造者模式(或者称为生成器(构建器)模式)
  • 【深度学习】Huber Loss详解
  • A5.Springboot-LLama3.2服务自动化构建(二)——Jenkins流水线构建配置初始化设置
  • 李宏毅机器学习HW1: COVID-19 Cases Prediction
  • MySQL下载安装DataGrip可视化工具
  • 多平台下Informatica在医疗数据抽取中的应用
  • 用公网服务器实现内网穿透
  • 为什么mysql更改表结构时,varchar超过255会锁表
  • ASP.NET Core中 JWT 实现无感刷新Token
  • 函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)
  • 物联网在烟草行业的应用
  • 第6章:Python TDD实例变量私有化探索
  • Java操作Excel导入导出——POI、Hutool、EasyExcel
  • BUUCTF_Web([GYCTF2020]Ezsqli)
  • 微软宣布Win11 24H2进入新阶段!设备将自动下载更新
  • SpringBoot:解决前后端请求跨域问题(详细教程)
  • Android-V lmkd 中的那些属性值
  • PageHelper快速使用
  • 图像处理基础(3):均值滤波器及其变种
  • 力扣刷题心得_JAVA
  • 音乐播放器实现:前端HTML,CSS,JavaScript综合大项目
  • Unity编辑器缩放设置
  • ChatGPT大模型极简应用开发-CH1-初识 GPT-4 和 ChatGPT
  • Golang学习笔记_27——单例模式
  • хорошо哈拉少wordpress俄语主题
  • [数据结构与算法]js实现二叉树
  • MySQL程序之:连接到服务器的命令选项
  • python3GUI--仿崩坏三二次元登录页面(附下载地址) By:PyQt5
  • 阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化
  • Unity 学习指南与资料分享