C epoll_wait将不同的值存储在";epoll“U事件”;

C epoll_wait将不同的值存储在";epoll“U事件”;,c,linux,epoll,C,Linux,Epoll,我会尽量保持简单。我的代码如下: 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, &

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

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"
epoll\u事件;
event.events=EPOLLIN | EPOLLET;
event.data.fd=clientSock;//这等于“7”
event.data.ptr=myPtr;
epoll\u ctl(epoll、epoll\u ctl\u ADD、客户端和事件);
//另一根线
epoll\u等待(epoll,&event2,MAX\u事件,epoll\u超时);
//这是奇怪的部分。。。

cout。因此,在任何给定时间,只有其一个成员包含一个值,因此当您分配给
event.data.ptr
时,您将替换先前写入
event.data.fd
的值。因此,后续的
epoll\u ctl
调用可能不会对您认为它会发生的事件表示兴趣,但在任何情况下,您都应该期望从结果事件数据中只读回
ptr
成员,而不是
fd
成员。

这真的是C吗?它更像C++,使用了 CUT。