fd_set fds; /* 将指定的文件描述符集清空,在对文件描述符集合进行设置前,必须对其进行初始化,如果不清空,由于在系统分配内存空间后,通常并不作清空处理,所以结果是不可知的。*/
// 初始化set集合为null集合 FD_ZERO(&fds); // 将socket_father_hd加入set集合 FD_SET(socket_father_hd, &fds); // 将socket_father_hd从set集合中清除 FD_CLR(socket_father_hd, &fds); // 检测socket_father_hd是否在set集合中,不在则返回0 FD_ISSET(socket_father_hd, &fds);
select函数用于决定一个或者多个套接字的状态。
int select( int nfds, // 指向检查可读性的套接字集合的可选的指针 fd_set *readfds, // 指向检查可写性的套接字集合的可选的指针 fd_set *writefds,
// 指向检查错误的套接字集合的可选的指针 fd_set *exceptfds, // select函数需要等待的最长时间,需要以TIMEVAL结构体格式提供此参数,对于阻塞操作,此参数为null const struct timeval *timeout );