对FD_SETSIZE的误解及文件描述符的本质

 对FD_SETSIZE的误解及文件描述符的理解

=======================================
我们先来看下面这段段代码:
 
  
  
  
  
  1. int fd; 
  2. for(fd=0;fd<FD_SETSIZE;fd++) 
  3.   if(FD_ISSET(fd,&testfds)) 
  4.   { 
  5.     //省略代码块 
  6.   } 
=======================================
我们先来简单介绍一下这段代码片段干了什么。
它从0开始FD_SETSIZE枚举查询该数字所代表的文件描述符有没有在描述符集合testfds中。
FD_SETSIZE不是表示fd_set结构中能存放的最大文件描述符数量嘛,如果这样那么枚举查询就会有逻辑问题,枚举的应该是值而不是数量吧。
网上一查,果然,我之前对FD_SETSIZE是错误的。
=======================================
正确的理解是:
FD_SETSIZE限制的应该是文件描述符的最大值,当然限制了最大值也就限制了个数。
=======================================
这样一来整段代码就变得顺理成章,程序遍历每一个可能的文件描述符的值,检测它知否在描述符集合中。
=======================================
通过这次查询我对文件描述符变得更加理解,一切都是数字,不是吗?
从标准输入、标准输出、标准错误输出,到open()和socket打开的文件描述符,不外如是。
本文转载自: http://www.mysql100.com/c/c_error_list/2013/0119/329.html

你可能感兴趣的:(C语言,FD_SETSIZE,FD_SETSIZE)