BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #7943同步于 2008/5/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教一个epoll的问题

redfox
2008/5/31镜像同步1 回复
以下是在网上搜到的信息: epoll_wait运行的原理是 等侍注册在epfd上的socket fd的事件的发生,如果发生则将发生的sokct fd和事件类型放入到events数组中。 并 且将注册在epfd上的socket fd的事件类型给清空,所以如果下一个循环你还要关注这个socket fd的话,则需要用epoll_ctl(epfd,EPOLL_CTL_MOD,listenfd,&ev)来重新设置socket fd的事件类型。 我想知道,“并且将注册在epfd上的socket fd的事件类型给清空”是不是真的? 如果是真的,为什么以下代码没有从新设置listerner for(;;) { nfds = epoll_wait(kdpfd, events, maxevents, -1); for(n = 0; n < nfds; ++n) { if(events[n].data.fd == listener) { client = accept(listener, (struct sockaddr *) &local, &addrlen); if(client < 0){ perror("accept"); continue; } setnonblocking(client); ev.events = EPOLLIN | EPOLLET; ev.data.fd = client; if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, client, &ev) < 0) { fprintf(stderr, "epoll set insertion error: fd=%d\n", client); return -1; } } else do_use_fd(events[n].data.fd); } } 在线等待。。。。。
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
AvrilLavigne机器人#1 · 2008/6/1
是和WSAAsyncSelect函数差不多的么?