问题一: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的重置。

select函数使用时应注意的问题相关推荐

  1. linux应用参数 冒号,Lua-面向对象中函数使用时冒号(:)和点(.)的区别

    Lua-面向对象中函数使用时冒号(:)和点(.)的区别,我们先来看一段简单的代码: local Animal ={}functionAnimal:Eat( food )print("Anim ...

  2. memmove函数使用时注意的问题

    首先,来了解一下memmove函数的声明类型,Linux c中的定义如下: #include <string.h> void *memmove(void *dest, const void ...

  3. 关于ADAMS中AZ函数使用时的一些心得

    今天做仿真时,发现使用AZ函数时的一些注意事项: 一:          其中MARKER_1需要是作用part(或者说受力运动的那个part)上的点,MARKER_33是与作用part相连的那个pa ...

  4. Matlab imshow(f,G)函数使用时出现错误

    imshow(f,G)使用时出现错误 ① imshow(h,128) 错误使用 imshow>preParseInputs (line 467) IMSHOW 语法无效. 出错 imshow ( ...

  5. php crc32 作用,php的crc32函数使用时需要注意的问题(不然就是坑)

    前几天写了一个分表程序,用的hash算法是crc32.分表的函数如下: 复制代码 代码如下: function _getHash($username) { $hash = crc32($usernam ...

  6. 一个memset函数使用时的坑

    平时使用memset函数都是用来初始化字符串,从来没有注意过它具体是怎么实现的,最近无意中发现原来这个函数里面还是有坑的. 我尝试用它来初始化整型数组 int array[10]; memset(ar ...

  7. STL : List使用时应注意的问题

    这篇文章所述只是本人遇到的问题,仅供参考. #include<list> #include<iostream>using namespace std;class Foo { p ...

  8. GetMessage()函数使用时的注意

    GetMessage()函数是一个很常见的函数,如果使用SDK写过Windows程序的话,那么就更不陌生,该函数的返回值值得注意的地方,因为最近在看Win32汇编的书,书中提到了这个函数.但是发现对于 ...

  9. strstr(str1,str2)函数使用时注意事项

    可能有的人还没听过strstr函数,个人认为这个一个很实用的函数,strstr(str1,str2) 函数是字符串处理函数之一,位于头文件 "string.h"中.对于处理字符串的 ...

最新文章

  1. Guava学习笔记:缘起
  2. php怎么删除多条,php 用checkbox一次性删除多条记录的方法
  3. Http协议中的各种长度限制总结
  4. 【转】Unity3d:读取FBX中的动画
  5. SVM 实现与代码(转)
  6. Python 中各种imread函数的区别与联系
  7. (四)boost库之正则表达式regex
  8. RuoYi-Cloud 部署篇_02(linux环境 mysql+nginx版本)
  9. 人力资源管理系统、OA、行政管理系统、考勤管理、资产管理、车辆管理、绩效管理、员工管理、招聘、入职、离职、转正、加班、调休、企业OA系统、axure原型、rp源文件、web端后台管理原型、高保真原型
  10. OpenStack icehouse系列之问题处理
  11. shell script if嵌套for循环脚本
  12. 最赚钱H5游戏《大天使之剑H5》公测24天流水破亿!
  13. BufferedWriter详解
  14. Jeremy Bearimy CodeForces - 1281E 贪心
  15. 实现SSH的无密码自动登录
  16. 利用curl命令访问Kubernetes API server
  17. Linux挖矿病毒事件应急响应演练(dbused木马)
  18. 谜题79: 这是狗的生活
  19. cocos creator麻将教程系列(六)—— 达达麻将的游戏流程
  20. 谷歌原版bert模型tf转pytorch命令

热门文章

  1. npm的使用以及npx
  2. Linux下部署redis、启动redis、创建redis节点集群
  3. TreeNode 树形结构
  4. 香肠派对学计算机,香肠派对电脑版
  5. YOLOv5实现佩戴安全帽检测和识别(含佩戴安全帽数据集+训练代码)
  6. win10与win7局域网络共享方法
  7. python怎么爬网站视频教程_python爬虫爬取某网站视频的示例代码
  8. openGPS.cn - 高精度IP定位现状分析
  9. windows环境下snort的安装
  10. 微软向前走,我们跟在后