select 使用注意事项
关于select函数的使用,有几点需要注意的地方:
1. maxfdp 为所有fd中的最大值加1.
2. rdfds 和 timeout 在每次执行select前都要重新初始化. 对于rdfds,每次循环都要清空集合,否则不能检测描述符变化;而对于timeout,每次都要初始化其值,否则timeout被默认初始化为0。
int nfds, select_ret; struct timeval timeout; fd_set readfds; FD_ZERO(&readfds); FD_SET(fd, &readfds);
3、另外注意最后一个参数不能直接赋值为0 赋值为0的话直接被认为时NULL 将会一直阻塞
可以使用struct timeval 结构体赋值为0
4、另外在监控套接字连接时select函数返回值为1