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


相关推荐

  • c语言length函数,length_length什么意思[通俗易懂]

    c语言length函数,length_length什么意思[通俗易懂]length什么意思length[英][leŋθ][美][lɛŋkθ,lɛŋθ]n.长度,长;时间的长短;(语)音长;一段,一节复数:lengths1.Abookisnotjudgedonlyonitslength.不能只根据篇幅长短来评价一本书。2.Ahallranthelengthoftheupperfloorofthehouse.走廊的长度等于房子…

    2022年5月18日
    62
  • phpstorm激活码2021(破解版激活)

    phpstorm激活码2021(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    49
  • Postman 使用教程 – 手把手教你 API 接口测试[通俗易懂]

    Postman 使用教程 – 手把手教你 API 接口测试[通俗易懂]Postman是一套API接口测试工具,它的强大在于灵活趁手的接口测试功能,极大的提高了API测试效率。本教程将由浅入深,带领大家一起学习如何使用Postman进行接口测试。API是什么?API的英文即ApplicationProgrammingInterface首字母的缩写。不要被这么长的单词吓到,直译过来的意思就是:程序之间的接口。我更倾向于把API理解为,程序之间的合约。有关API是什么及.

    2022年5月31日
    36
  • 数据库中的having语句_sql的having语句

    数据库中的having语句_sql的having语句SQL语句HAVING的用法HAVING语句通常与GROUPBY子句及聚集函数COUNT,AVG,SUM,MAX,MIN语句联合使用,用来过滤由GROUPBY语句返回的记录集,通常跟在GROUPBY后边作用相当于WHERE。where子句后边是指定行所对应的条件,并且不能含有聚集函数,而HAVING后边是指定组所对应的条件,可以含有聚合函数。HAVING语句的存在弥补了WHERE关键字不能与聚集函数联合使用的不足。我们可以这样理解:where筛选的是行(一个元组),而having筛选的是组(多

    2025年8月30日
    6
  • SVM和logistic regression的一些对比

    SVM和logistic regression的一些对比

    2021年6月15日
    112
  • dos命令进入文件夹[通俗易懂]

    输入D:回车,进入D盘的根目录,然后输入dir回车可以查看根目录下的文件和文件夹,输入cd空格文件夹的名字(不区分大小写)进入文件夹根目录下,依次输入dir查看该目录下的文件和文件夹。   附录:MSDOS命令大全一、基础命令1dir无参数:查看当前所在目录的文件和文件夹。/s:查看当前目录已经其所有子目录的文件和文件夹。

    2022年4月14日
    279

发表回复

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

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