当前位置: 技术问答>linux和unix
epoll_ctl()的参数似乎有个冗余的地方,求教!
来源: 互联网 发布时间:2017-04-14
本文导语: int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64; ...
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
struct epoll_event {
__uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
};
问题是:epoll()函数的第三个参数int fd和epoll_event.data.fd这两个fd必须是同一个东西吗?
什么时候必须是同一个东西,什么时候可以是不同的fd?
|
epoll_ctl的events是输入参数,你可以用一个event->data.ptr来和epoll_ctrl的第二个参数fd做绑定,在epoll_wait的时候,events是输出参数,用于返回和fd相关联的event,此时取出ptr,强转之后,就可以做你自己的消息响应了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。