首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FD_ISSET在FD_SET之后返回0

FD_ISSET在FD_SET之后返回0
EN

Stack Overflow用户
提问于 2013-05-21 12:56:58
回答 1查看 1.8K关注 0票数 0

我有以下代码:

代码语言:javascript
复制
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不需要调用FD_CLR就返回0。当我运行MobileC服务器时,代码会跳入when,但是在运行的代码中没有任何FD_CLR。我在集合和文件描述符方面是个新手,我还没有搞清楚到底发生了什么。你有什么主意吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-21 13:03:05

select(2)的第二个、第三个和第四个参数是in-out参数,这意味着调用修改它们,让您知道返回时发生了什么事件。这就是为什么每次调用select(2)之前都需要重新启动文件描述符设置的原因。

还可以查看其他解复用器,如poll(2)epoll(7)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16670581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档