1
完善资料让更多小伙伴认识你,还能领取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()确实返回的是当前客户端的个数
|
|
|
|
只有小组成员才能发言,加入小组>>
791 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2710 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1070浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 00:41 , Processed in 1.088706 second(s), Total 82, Slave 63 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号