select函数使用时应注意的问题

2023-10-27

问题一:fd_set和timeval的重置。

select函数的使用一般分为以下几步

1、FD_ZERO(fd_set*);

2、FD_SET(int fd,fd_set*);

3、int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

4、FD_ISSET(int fd, fd_set *set);

仔细观察以上函数会发现,fd_set参数和timeval参数传递的全是其变量指针。然而,经过实验四个函数均会通过指针对fd_set和timeval的最初值进行更改,因此,在每次调用select函数之前必须对fd_set和timeval进行重置,使二者保持正确的初始值。

问题二:select函数中第一参数(int n)的设置。

该参数代表的是select函数监听描述字集的最大值即最大位数,使用的是开区间。我们知道使用FD_SET是对描述字集进行设置,而实际上的操作是对于描述字集fd_set的对应位置1,例如int fd = 5,则执行FD_SET宏后,fd_set描述字的第五位置1,即***10000;若此时,fd_set不足5位则无法完成fd_set描述字集的正确注册,因此,每次调用select函数之前都要保证n大于描述字集fd_set的最大位数,即最大位数+1。

综上所述,使用select函数,在每次进行描述字集注册,即调用select函数之前一定要注意fd_set、timeval和n的重置。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

select函数使用时应注意的问题 的相关文章

随机推荐

  • [Android] The connection to adb is down, and a severe error has occured

    一 ADB server didn t ACK在配置完Android环境后 运行第一个程序时 遇到了如下错误 ADB server didn t ACK failed to start daemon 它可能的原因是端口5037被占用 需要查
  • Python OpenCV 基础教程

    Python OpenCV基础教程 文章目录 Python OpenCV 基础教程 1 简介 2 安装 3 使用 3 1 图像操作 加载 显示 保存 3 1 1 读入图像 cv2 imread 3 1 2 显示图像 cv2 imshow 3
  • Maven项目找不到依赖包

    Maven找不到依赖包 今天在打开一个项目的时候 本地仓库是有这个包的 可是maven projects dependencies下的com alibaba dubbo 2 8 4一直出现波浪线提示找不到这个包 后来吧本地的包删掉然后再刷新
  • GSM PA前端插损

    GSM PA前端插损 文章目录 GSM PA前端插损 一 GSM PA前端插损 一 GSM PA前端插损 GSM BAND DRB要求 产线功率上限 PA前插损 PA前插损 850 32 5 1 0 4 0 4 900 32 5 1 0 4
  • 视图库——公安视频侦查数据处理应用中心

    随着城市视频监控系统的不断完善和扩建 视频已经成为社会数据量最大的一类数据 网络甚至流传这样一个段子 电视台新闻行业应该给视频监控行业颁发 最佳素材奖 原因是电视台播放的新闻中 有四分之一的素材来自于视频监控 当然这只是个段子 但无疑也再次
  • 【.NET 6】使用EF Core 访问Oracle+Mysql+PostgreSQL并进行简单增改操作与性能比较

    前言 唠嗑一下 都在说去O或者开源 但是对于数据库选型来说 很多人却存在着误区 例如 去O 狭义上讲 是去Oracle数据库 但是从广义上来说 是去Oracle公司产品或者具有漂亮国垄断地位和需要商业授权的数据库产品 去O 目前国内有一个现
  • DBA 面试题

    一 SQL tuning 类 1 列举几种表连接方式 2 不借助第三方工具 怎样查看sql的执行计划 3 如何使用CBO CBO与RULE的区别 4 如何定位重要 消耗资源多 的SQL 5 如何跟踪某个session的SQL 6 SQL调整
  • echarts分享(四):双y轴图表刻度均匀分布问题

    今天分享一个小问题 内容不多 双y轴图表中 为了图表的美观 经常会隐藏一侧的y轴刻度线 仅显示一侧的刻度线 那么问题就来了 两个y轴的数据数值大小不同 常常会导致刻度线的刻度分布不均匀 该如何解决呢 这里分享下我在项目中所作的处理 首先是要
  • ESP32彩屏开发板(WT32-SC01),除了买买买,你还可以参与一起设计了

    基于ESP32彩屏的开发板已在Git Hub平台上开源给所有的开发者了 硬件参数 显示屏 3 5 英尺 LCD 屏幕 分辨率 320 480 SoC ESP32 WROVER B 模组 CPU 双核 Xtensa 32 bit LX6 MC
  • ESP8266测试Wi-Fi通讯安全

    创建Arduino Sketch include
  • 5.荔枝派 zero(全志V3S)-buildroot配置播放视频

    上面是我的微信和QQ群 欢迎新朋友的加入 1 开启ALSA和MPLAY 编译烧录 2 测试 amixer c 0 sset Headphone 0 100 unmute cd usr bin mplayer root test mp4 3
  • is too old (format 10, created by Subversion 1.6)的解决方案

    svn Working copy E aliyun spirit spiritmap0916 is too old format 10 created by Subversion 1 6 解决方案 对项目进行upgrade 等待刷新完成即可
  • Android SDK+Appium安装及环境配置

    Android SDK环境搭建Xmind思维导图 一 安装SDK先配置环境变量 1 创建 JAVA HOME D Program Files Java jdk1 8 0 05 2 创建 CLASSPATH D Program Files J
  • uniapp 拍照和从相册选择的弹窗

    1 在common创建一个vue 把下列代码复制进去
  • linux安装 MySQL 5.7

    我的是CentOS 7 虚拟机 因为之前一直安装失败 浪费了不少时间 特此记录一下正确安装步骤 亲测可用 1 下载命令 wget https dev mysql com get mysql57 community release el7 9
  • 微信小程序云开发——图片展示,视频播放案例

    这次是帮朋友写的一个简单的小程序 考虑到成本和页面简单的问题 我就决定用小程序云开发来进行开发 后来实际开发的时候发现 页面用到图片实在是太多 CDN流量一个月5G根本不够用 但是我看到了数据库一天可以免费访问5万次 我就决定用base64
  • 区块链存证原理

    公证通 Factom公证通 一本由共识算法维护的账本 网录科技 网录科技CTO汪波 区块链做存证的原理及方式 专注区块链技术开发 网录科技千万级天使轮融资 Blockstack 官网 https blockstack org 白皮书 htt
  • 用python编写daemon监控进程并自动恢复

    用python编写daemon监控进程并自动恢复 下面这个程序是用于python编写daemon监控进程并自动恢复 参考http pythonhosted org KiTT modules kitt daemon html usr bin
  • mac下 docker 挂载目录权限问题(operation not permitted)

    在docker run 或者 docker compose yml 添加privileged true privileged的含义是让容器内的root拥有真正root用户的权限 否则它只是一个名为root的普通用户 但是在macos下 即使
  • select函数使用时应注意的问题

    问题一 fd set和timeval的重置 select函数的使用一般分为以下几步 1 FD ZERO fd set 2 FD SET int fd fd set 3 int select int n fd set readfds fd s