我想知道如何使用 container_of 设置 epoll。我正在使用最新版本的 ubuntu 和 eclipse-cdt (gcc)。我的想法是获取事件,然后获取事件来源的容器。
如果我有这样的结构:
struct client {
int s;
struct epoll_event e;
}foo;
进而 ... :
struct epoll_event *events = NULL;
struct client *c = NULL;
foo.s = (socket);
int efd = epoll_create1(0);
foo.e.data.fd = foo.s;
foo.e.events = EPOLLIN;
epoll_ctl ( efd , EPOLL_CTL_ADD , foo.s , &foo.e );
events = (struct epoll_event*)calloc ( XXX , sizeof event );
while(1) {
int n = epoll_wait ( efd , events , XXX , -1 );
for ( int i = 0 ; i < n ; i++ ) {
c = container_of ( events[i] , client , e );
我怎么能做这样的事情?谢谢!