es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo asignar event.ptr en epoll?

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.data.ptr = NewSockItem(clientfd, recv_cb);

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

al compilar, se presenta un error como este:

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error en el código se debe al hecho de que la estructura de datos ‘struct epoll_event’, que está definida en el archivo de encabezado ‘sys/epoll.h’, no tiene un miembro llamado ‘events.ptr’. El nombre correcto del miembro es ‘data.ptr’. Por lo tanto, la línea ‘ev.events.ptr = NewSockItem(clientfd, recv_cb);’ debería cambiarse a ‘ev.data.ptr = NewSockItem(clientfd, recv_cb);’. Una vez hecho esto, el error debería resolverse y el código debería compilarse correctamente.

Comments are closed.