Do you know how to use the data.ptr in epoll_event?
as you know
typedef union epoll_data
{
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;//保存触发事件的某个文件描述符相关的数据 struct epoll_event
{
__uint32_t events; /* epoll event */
epoll_data_t data; /* User data variable */
};
The answer :
The void *ptr and int fd both are inside a union inside the
struct epoll_event. You should use either of them not both.
Hence in your struct, add the field for fd as well and only
link pointer to the struct in the ptr field of the epoll_event.
This way when you get back your pointer then get the fd from it for further use.