系统:centos 7 64位
select 中的fd_set
fd_set结构体定义在这:
typedef struct
{
/* XPG4.2 requires this member name. Otherwise avoid the name
from the global namespace. */
#ifdef __USE_XOPEN
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
# define __FDS_BITS(set) ((set)->fds_bits)
#else
__fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
# define __FDS_BITS(set) ((set)->__fds_bits)
#endif
} fd_set;
fd在内核中存储在fd_set,fd_set是包含一个大小为 16 ( __FD_SETSIZE / __NFDBITS)的数组;数组成员 long int(8B=64b);
int main()
{
fd_set fdset;
FD_ZERO(&fdset);
for (int i=0; i<16; i++){
FD_SET(i*64, &fdset);
}
debug("NFDBITS = %d", NFDBITS);
debug("FD_SETSIZE = %d", FD_SETSIZE);
for (int i=0; i< FD_SETSIZE/ NFDBITS; i++){
debug("fdset[%d]