select执行正常,为什么有时FD_ISSET却判断失败
问题是这样的,select执行后,有时FD_ISSET却判断失败,但大部分的时候都是判断正常的,判断失败的情况大概执行100次会出现6次,但是现在不允许FD_ISSET判断失败,我想问下,标题所示的这种情况是在什么条件下发生的。
下面是相关源码:
int recv_data(int sockfd){ fd_set r_set; while(1) { FD_ZERO(&r_set); FD_SET(sockfd, &r_set); if(select(sockfd + 1, &r_set, NULL, NULL, NULL) == -1) err_sys("select error \n"); // 当我描述的问题出现时,可以执行到这里,可是下面有时判断失败 if(FD_ISSET(sockfd, &r_set)) { // do something } } return 1;}