fd_set 结构 fd_set 本质上是一个位图(bitmap),每一位对应一个文件描述符。其定义通常在 <sys/select.h> 头文件中。 代码语言:txt 复制 typedef struct { unsigned long fds_bits[FD_SETSIZE / sizeof(unsigned long)]; } fd_set; FD_SETSIZE 是一个宏,定义了 fd_set 可以包含的最大文件描述符数量...
fds_bits unsigned long fd_set::fds_bits[FD_SETSIZE/8/sizeof(long)] Description: Whether the descriptor exists is indicated by each bit. 本网站中的部分文档和示例代码来自第三方,您可通过NOTICE查看详情。 意见反馈 以上内容对您是否有帮助? 意见反馈 如果您有其他疑问,您也可以通过开发者社区问答频道...
FD_ZERO(&set); /*将set的所有位置0,如set在内存中占8位则将set置为 00000000*/ FD_SET(0, &set); /* 将set的第0位置1,如set原来是00000000,则现在变为10000000,这样fd==1的文件描述字就被加进set中了 */ FD_CLR(4, &set); /*将set的第4位置0,如set原来是10001000,则现在变为10000000,这样f...
FD_SET函数,分开看__FDS_BITS (set)结构里面的fds_bits数组。__FD_ETL(d),除32,看这个fd在fd_bits第几位上。 FD_MASK 这个宏特别的牛逼,确实佩服一下,先模32,然后就得出余数,然后将1向左移位,这样一来就可以进行&,互不影响。
#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set)) typedef int32_t __fd_mask; #define _NFDBITS (sizeof(__fd_mask) * 8) /* 8 bits per byte */ #define __howmany(x,y) (((x)+((y)-1))/(y)) #ifndef _FD_SET ...
static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp) { unsigned long _tmp = fd / __NFDBITS; unsigned long _rem = fd % __NFDBITS;fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem); }#undef __FD_ISSET static __inline__ int __FD_ISSET(unsigned long fd, ...
#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & _fdset_mask(n)) #define FD_COPY(f, t) bcopy(f, t, sizeof(*(f))) #define FD_ZERO(p) bzero(p, sizeof(*(p))) fd_set master_set_read; FD_SET(600,master_set_read); ...
在Linux系统编程中,通常会使用文件描述符集合(File Descriptor Set)来管理一组文件描述符。其中,`fd_set`是一个位向量类型,用来表示文件描述符集合。`fd_set`的定义如下: ```c typedef struct fd_set { fd_set fds_bits[FD_SETSIZE / (8 * sizeof (fd_mask))]; ...
(在我的系统中,__FD_SETSIZE是1024,__NFDBITS是sizeof(long int)即32,就是说,fd_set是4个long int 数组,最多放128个文件描述符(是不是太少了啊???)) 由于fd_set实现不同,导致selet也不太一样,其他第一个参数在windows下就没有意义了(MSDN: Thenfdsparameter is included only for compatibility with...
1 # define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) 1. 可以看出,在上面的过程,实际上每个bit在fd_set的bit序列中的位置对应于fd的值。而fd_set结构中bit位个数是__FD_SETSIZE定义的,__FD_SETSIZE在/usr/include/bits/typesize.h(包含关系如下sys/socket.h ...