《linux c 编程实战 》 -我的纠错笔记

《linux c 编程实战 》 -我的纠错笔记

一切仅作为参考,欢迎任何人讨论

 

  [页数] 151     [位置] my_rwl.c [类型]  代码错误     

       [描述]   从书上看 __LINE__,是一个下划线,但实际上内置宏是前后各两个下滑线组成的,即 _ _LINE_ _

 

  [页数] 195     [位置] studyuid.c [类型]  代码错误     

       [描述]   strerror()的头文件是string.h ,需要添加之后才能代码才能运行

 

  [页数] 251    [位置] ctrlpocess.c [类型]  代码错误     

       [描述]   read 的函数声明 :ssize_t read(int fd, void *buf, size_t count),而 stdin 的声明是extern FILE *stdin,因此 read(stdin,buf,1024)不匹配,改成read(0,buf,1024)

 

   [页数] 299   [位置] 中部         [类型]  描述偏差          PS :待讨论

       [描述]   int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);

                  对nfds 是这么解释的 :需要监视的文件描述符数,man之后的解释是

                  nfds is the highest-numbered file descriptor in any of the three sets【 在所有的文件描述符中最高值的大小】

                   使用建议:取最大的文件描述符加一

 

   [页数] 299   [位置] 中部         [类型]  描述不足          PS :待讨论

       [描述]  对FD_ISSET( int fd,fd_set *set )是这么解释的: 测试fd是否在set里

                  这么解释是对的,但缺少铺垫容易导致误导,应该再加上一句,select函数之后,会改变 set的值,只保留有状态【可读,可写,异常】的文件描述符, 

                      

socket   s; 
..... 
fd_set   set; 
while(1) 
{     
    FD_ZERO(&set);//将你的套节字集合清空 
    FD_SET(s,   &set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字s 
    select(0,&set,NULL,NULL,NULL);//检查套节字是否可读, 
                                                      //很多情况下就是是否有数据(注意,只是说很多情况) 
                                                      //这里select是否出错没有写 
    if(FD_ISSET(s,   &set)   //检查s是否在这个集合里面, 
    {                                           //select将更新这个集合,把其中不可读的套节字去掉 
                                                //只保留符合条件的套节字在这个集合里面 
                                
            recv(s,...); 
    
    } 
    //do   something   here 
}

 

               依据[都是根据man之后描述推测的,如果能提供更加可靠的描述,要联系我呀]

             

               一  man 的 description部分

                     Three independent sets of file descriptors are watched. Those listed
                     in readfds will be watched to see if characters become available for
                      reading 【可读文件集中的元素将被检测其是否成文可读文件描述符,】

                      (more precisely, to see if a read will not block; in particu‐
                     lar, a file descriptor is also ready on end-of-file【更加精确的是,看

                     可读设置是否被阻塞,尤其是,对于文件描述符,其文件结尾是否可读】), those in

                     writefds will be watched to see if a write will not block, and those in
                     exceptfds will be watched for exceptions. On exit, the sets are modi‐
                     fied in place to indicate which file descriptors actually changed sta‐
                     tus.【select 函数在推出时,这些文件集合将被修改以便于显示那些文件描述符改变了状态】

              二  man 的 return 部分

                   On success, select() and pselect() return the number of file descrip‐
                   tors contained in the three returned descriptor sets (that is, the
                    total number of bits that are set in readfds, writefds, exceptfds)

                          【 成功的话 ,select和pselect函数将返回包含在三个文件集合中的文件描述符个数】

 

 

 

转载于:https://www.cnblogs.com/dilidingzhi/p/4263290.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109565.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月3日 下午7:00
下一篇 2021年9月3日 下午8:00


相关推荐

  • php7 什么意思,php7新特性

    php7 什么意思,php7新特性1 trait 将类作为代码块引入 EasySwoole Core AbstractInte Singleton php 文件 namespaceEas Core AbstractInte traitSinglet privatestati instance staticfuncti args if isset se

    2026年3月17日
    2
  • 方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)

    方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)1、背景对于微弱的信号的处理方式一般是:放大和滤波,这个过程中就涉及到放大电路的选取、滤波器的选择以及偏置电路的设计。本例以实例的方式讲解并附带参数计算、仿真、实物测试三个环节。假设需要处理一个20mV的正弦信号,该信号的频率范围是15~35Hz,经过处理后幅值不超过3.3V,且需要经过带通滤波器滤除杂波。2、滤波器定义滤波电路又称为滤波器,是一种选频电路,能够使特定频…

    2022年6月7日
    44
  • NSGA-II入门

    NSGA-II入门NSGA-II入门C1觉得有用的话,欢迎一起讨论相互学习~FollowMe参考文献1参考文献2白话多目标多目标中的目标是个瓦特?多目标即是优化问题中的优化目标在3个及以上,一般这些优化的目标都存在着矛盾,例如:我要买一个又便宜又漂亮又性能好的车的时候,价格,外观,性能这就是一个典型的多目标问题,我们必须在商品的价格,外观和性能上做出取舍,毕竟外观漂亮性能强劲的车型往往意味着…

    2022年5月12日
    115
  • 一个短信验证码功能引发的总结思考[通俗易懂]

    从简单的功能探寻背后的技术。文章目录故事短信验证码设计总结1、时间限制2、图形验证码限制 + 时间限制3、手机号+指定时间可以发短信次数限制4、IP及Cookie限制5、短信预警机制后记故事昨天看到一个地址,新用户免费领取X登读书APP的14天会员,2020年了,要开始读书了。看到这个活动是在笔记本上,于是用笔记本浏览器访问活动页面,输入手机号,收到验证码,填写验证码,领取这个会员。本…

    2022年2月28日
    52
  • javaweb项目连接MySQL数据库_php实现评论回复功能

    javaweb项目连接MySQL数据库_php实现评论回复功能Java+MySQL实现评论功能设计开发一、背景项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧。由于项目需要增加评论功能,之前并无此方面的经验,因此项目开始的一段时间都在寻思着如何进行评论功能的设计。上网搜索一波…

    2026年4月20日
    4
  • python中eval函数作用「建议收藏」

    python中eval函数作用「建议收藏」eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。想象一下变量赋值时,将等号右边的表达式写成字符串的格式,将这个字符串作为eval的参数,eval的返回值就是这个表达式的结果。eval函数就是实现list、dict、tuple与str之间的转化,str函数把list,dict,tuple转为为字符串一、字符串转换成列表a=”[[1,2],[3,…

    2025年6月11日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号