【问题标题】:How to assign event.ptr in epoll?如何在 epoll 中分配 event.ptr?
【发布时间】:2022-01-06 04:23:55
【问题描述】:
struct sockitem* NewSockItem(int sockfd, CallBack cb) {

    struct sockitem *si = (struct sockitem*)malloc(sizeof(struct sockitem));
    si->sockfd = sockfd;
    si->callback = cb;
    return si;
}

struct epoll_event ev;
ev.events = EPOLLIN | EPOLLET;
ev.events.ptr = NewSockItem(clientfd, recv_cb);

epoll_ctl(eventloop->epfd, EPOLL_CTL_ADD, clientfd, &ev);

构建时,错误发生如下:

enter image description here

【问题讨论】:

  • 不应该是ev.data.ptr吗?只需按照man7.org/linux/man-pages/man2/epoll_wait.2.html 中的struct 的定义进行
  • 您更改了出现错误的代码行。现在错误消息不再适合代码。错误说它在ev.event.ptr = ... 行中,但你只有ev.data.ptr = ...。您目前的问题是什么?
  • 使用 ev.data.ptr,而不是 ev.events.ptr
  • 对于未来的问题,请不要添加指向纯文本图片的链接。相反,只需将您的文本输出直接添加到问题中。

标签: c++ c epoll


【解决方案1】:

使用ev.data.ptr 而不是ev.events.ptr

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多