《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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot AOP学习(二):Spring AOP实现日志功能

    SpringBoot AOP学习(二):Spring AOP实现日志功能SpringAOP实现日志功能代码示例

    2022年8月11日
    5
  • Java switch 使用枚举类

    Java switch 使用枚举类开发过程中为了代码的可阅读性和可维护性,很多类型字段往往会习惯使用枚举去定义,可是在一些判断里面想用switch去代替ifelse就会出现以下问题publicenumSexType{MAN(1,”男”),GIRL(2,”女”),;privateinttype;privateStringwork;SexType(inttype,Stringwork){this.type=type;

    2022年7月14日
    16
  • python 请在微信客户端打开_如何实现‘请在微信客户端打开链接’

    python 请在微信客户端打开_如何实现‘请在微信客户端打开链接’想要实现请在微信客户端打开链接在代码中加入以下代码即可varua=navigator.userAgent.toLowerCase();varisWeixin=ua.indexOf(‘micromessenger’)!=-1;varisAndroid=ua.indexOf(‘android’)!=-1;varisIos=(ua.indexOf(‘iphone’)!=…

    2022年6月7日
    104
  • PSR-4

    PSR-4

    2021年10月24日
    42
  • 单片机交通信号灯控制系统设计_交通灯控制电路设计图

    单片机交通信号灯控制系统设计_交通灯控制电路设计图交通信号灯控制系统设计 作为一个硬件程序设计民工,最近一直在学习python,写个爬虫,排个序,再画个界面,其实还是挺好玩的。然而这不是我的主业啊!!!-_-|||下学期开学就要找工作了,明天刚好是新的一个月,还是滚回去调我的FPGA吧。今天先更新一个很小很小的例子作为开端,这是前几天xxx给我出的一道很随意的题目,主要是看面对一个项目…

    2022年9月24日
    2
  • 图像处理之霍夫变换(直线检测算法)

    图像处理之霍夫变换(直线检测算法)图像处理之霍夫变换 直线检测算法 霍夫变换是图像变换中的经典手段之一 主要用来从图像中分离出具有某种相同特征的几何形状 如 直线 圆等 霍夫变换寻找直线与圆的方法相比与其它方法可以更好的减少噪声干扰 经典的霍夫变换常用来检测直线 圆 椭圆等 nbsp 霍夫变换算法思想 以直线检测为例 每个像素坐标点经过变换都变成都直线特质有贡献的统一度量 一个简单的例子如下 一条直线在图

    2025年9月27日
    3

发表回复

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

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