3

对于同一个套接字,我想注册两个事件:一个是 EPOLLIN,另一个是 EPOLLOUT|EPOLLET。

所以对于输入,我希望它是电平触发,对于输出,我希望它是边缘触发。

            ev.data.fd=fd;
            ev.events=EPOLLIN;
            epoll_ctl(epfd,EPOLL_CTL_ADD,fd,&ev);
            ev.events=EPOLLOUT|EPOLLET;
            epoll_ctl(epfd,EPOLL_CTL_ADD,fd,&ev);

有可能吗?有什么问题吗?谢谢!

4

1 回答 1

6

以下来自问答部分:epoll(7)

Q1 如果你在一个epoll实例上注册同一个文件描述符两次会发生什么?

A1 你可能会得到EEXIST. 但是,可以将重复的 ( dup(2), dup2(2), fcntl(2) F_DUPFD) 描述符添加到相同的epoll instance. 如果重复的文件描述符使用不同的events掩码注册,这可能是过滤事件的有用技术。

于 2013-05-20T17:35:06.247 回答