完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
netlink 的 socket 连接 的 fd 为18,但是添加到epoll后 epoll_wait()返回的fd 为 0 为什么会出现这样的现象?
补充 说明: 1、 epoll_wait返回event数据结构中的data.fd 2、在嵌入式Linux下执行返回的 fd 为 0,在Ubuntu下运行为4217881 |
|
相关推荐
4个回答
|
|
云汉达人
struct epoll_event events[MAX_EVENT_NUMBER]; epoll_wait()每次返回的是活跃客户端的个数,而不是fd的值。 void test(int epollfd) { struct epoll_event events[MAX_EVENT_NUMBER]; int number; while (1) { number = epoll_wait(epollfd, events, MAX_EVENT_NUMBER, -1); printf("number : %2dnn", number); for (i = 0; i < number; i++) { sockfd = events.data.fd; if (sockfd == listenfd) {/*用户上线*/ } else if (events.events & EPOLLIN) {/*有数据可读*/ } else if (events.events & EPOLLOUT) {/*有数据可写*/ } else {/*出错*/ } } } } |
|
|
|
邀请回答
嗨,您要使用Epoll的epoll_wait函數,那麼最好要創建evenfd當作file descriptor,函數原型描述如下: 原網址http://man7.org/linux/man-pages/man2/eventfd.2.html NAME eventfd - create a file descriptor for event notification SYNOPSIS #include int eventfd(unsigned int initval, int flags); DESCRIPTION eventfd() creates an "eventfd object" that can be used as an event wait/notify mechanism by user-space applications, and by the kernel to notify user-space applications of events. The object contains an unsigned 64-bit integer (uint64_t) counter that is maintained by the kernel. This counter is initialized with the value specified in the argument initval. 以上希望對您有用 |
|
|
|
在epoll_event 数据结构中存在epoll_data_t 其中对该值进行了两次赋值,而epoll_data_t 却是为共用体结构,将前值进行了覆盖。
|
|
|
|
epoll_wait()确实返回的是当前客户端的个数
|
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:04 , Processed in 0.963455 second(s), Total 84, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号