首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >epoll_wait在"epoll_event“中存储不同的值

epoll_wait在"epoll_event“中存储不同的值
EN

Stack Overflow用户
提问于 2020-07-04 13:09:54
回答 1查看 95关注 0票数 0

我尽量保持简单。我的代码如下:

代码语言:javascript
复制
epoll_event event;

event.events = EPOLLIN | EPOLLET;
event.data.fd = clientSock; // this is equal to "7"
event.data.ptr = myPtr;
epoll_ctl(epoll, EPOLL_CTL_ADD, client, &event);


//Another thread

 epoll_wait(epoll, &event2, MAX_EVENTS, EPOLL_TIMEOUT);

 // This is the strange part... 
 cout << event2.data.fd; //output is different from "7"

但是,如果我没有在event.data.ptr中添加ptr (我在调用epoll_wait之前就这样做了),那么event2.data.fd的值是正确的(7)。是什么引起的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-04 13:41:48

The type of the data member of struct epoll_event is a 。因此,它的一个成员在任何给定的时间都只包含一个值,所以当您将值赋值给event.data.ptr时,您可以替换以前写入event.data.fd的值。因此,后续的epoll_ctl调用可能并不表示对您认为会发生的事件感兴趣,但无论如何,您应该只希望从结果事件数据中读取ptr成员,而不是从fd成员中读取。

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

https://stackoverflow.com/questions/62729545

复制
相关文章

相似问题

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