fd_set 是一个描述符的集合. 其中每一位是标示每一个描述符. 通过FD_SET()宏在集合中设置描述符.下面是宏的实现...
1 #define FD_SET(fd, set) do { \ 2 u_int __i; \ 3 for (__i = 0; __i < ((fd_set FAR *)(set))->;fd_count; __i++) { \ 4 if (((fd_set FAR *)(set))->;fd_array[__i] == (fd)) { \ 5 break; \ 6 } \ 7 } \ 8 if (__i == ((fd_set FAR *)(set))->;fd_count) { \ 9 if (((fd_set FAR *)(set))->;fd_count < FD_SETSIZE) { \ 10 ((fd_set FAR *)(set))->;fd_array[__i] = (fd); \ 11 ((fd_set FAR *)(set))->;fd_count++; \ 12 } \ 13 } \ 14 } while(0)