我有以下代码:
FD_SET(mc_sock, &readfds);
foo = FD_ISSET(mc_sock, &readfds); // returns 1
// Wait until some socket on the set is ready to be read
while(select (FD_SETSIZE,&readfds,NULL,NULL,ptv)) {
foo = FD_ISSET(mc_sock, &readfds); // returns 0
我将 mc_sock 添加到readfds并且 FD_ISSET 按预期返回 1。但是稍后当在 while 循环内部时,FD_ISSET 返回 0 而不调用 FD_CLR。当我运行 MobileC 服务器时,代码会跳转到 while,但运行的代码中没有任何 FD_CLR。我是集合和文件描述符的新手,我还没有发现发生了什么。你有想法吗?
谢谢!