完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
写了一个字符驱动,添加了轮询机制,但是不能正常轮询,我的字符驱动一次生成多个设备节点。当只生成一个设备节点的时候,可以正常轮询,但是多个的话,就不能正常轮询了,有两种情况。第一种情况:
不能轮询,运行之后,效果如下图: 第二种情况:
可以轮询到,但是不能实时更新,需要重新运行程序才能正常显示轮询结果。 综上怀疑是FD_ZERO函数的问题,大家有仔细研究过设备驱动的轮询机制吗? |
|
相关推荐
3个回答
|
|
第一种情况:你显示在if()里FD_SET了,但是运行到while里就清空了,当然FD_ISSET就不可能测试到。
第二种情况:应该是 while(1) { FD_ZERO(&rfds); FD_ZERO(&wfds); FD_SET(fd[i], &rfds); FD_SET(fd[i], &wfds);
最佳答案
|
|
|
|
第一种情况:你显示在if()里FD_SET了,但是运行到while里就清空了,当然FD_ISSET就不可能测试到。
第二种情况:应该是 while(1) { FD_ZERO(&rfds); FD_ZERO(&wfds); |
|
|
|
嗯,是select函数,我没有理解透彻。 我谷歌到一个网页:解答select函数 先贴上图: 翻译过来的意思就是,selcet函数,执行返回之后,对应的fd_set结构体只保留了轮询到的描述符,所以每次轮询(select)前都要重新清零(FD_ZERO)和重新设置(FD_SET)。 |
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4873 浏览 0 评论
87365 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4686 浏览 2 评论
3572 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2459 浏览 0 评论
1954浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1322浏览 1评论
1233浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1301浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1215浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 23:15 , Processed in 1.193577 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号