免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7796 | 回复: 14
打印 上一主题 下一主题

为什么明明在/dev下没有的设备文件,在代码中却能正常打开? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-20 21:19 |只看该作者 |倒序浏览
在我系统下ls 查看/dev/下的文件“mixer”, 是找不到这个文件的。但是我发现我之前的一个代码,其中用open打开这个设备,并调用ioctl操作了这个设备,操作都成功了!!
这个是为什么呢? ls明明没有这个设备文件的。。高手指点。。谢谢

论坛徽章:
0
2 [报告]
发表于 2011-06-20 21:24 |只看该作者
写裸盘,数据库软件用得比较多。

论坛徽章:
0
3 [报告]
发表于 2011-06-20 21:43 |只看该作者
写裸盘,数据库软件用得比较多。
独臂剑客 发表于 2011-06-20 21:24



    恩,,,这个能再具体解释一下吗??  我关键是不理解这个/dev/mixer,文件明明没有。为什么程序却能直接open呢?  比如说我在网上找到一个代码是操作系统中的音频设备/dev/dsp的。
这个dsp设备在/dev下,我没有找到,结果运行这个代码,就报错说找不到这个设备。但是像刚刚哪个mixer,同样看不见,为什么却还能打开呢?

论坛徽章:
0
4 [报告]
发表于 2011-06-20 22:03 |只看该作者
ls命令是基于文件系统而言,而/dev/mixer是硬件设备级概念,你可以man一下fdisk和ls命令的区别,就能理会了.

论坛徽章:
0
5 [报告]
发表于 2011-06-21 09:00 |只看该作者
回复 4# 独臂剑客


    离奇了吧...  open也是基于文件系统.若不存在这个inode,一样返回错误。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
6 [报告]
发表于 2011-06-21 22:22 |只看该作者
{:3_182:}再确认一遍吧,感觉不太可能

论坛徽章:
0
7 [报告]
发表于 2011-06-21 22:31 |只看该作者
回复 5# linyunxian


    你指的文件系统是什么,如果你要这么说,linux下所有设备驱动操作都是基于文件的概念而言。

论坛徽章:
0
8 [报告]
发表于 2011-06-21 23:44 |只看该作者
strace 跟一下看看?

论坛徽章:
0
9 [报告]
发表于 2011-06-22 16:57 |只看该作者
猜测那个程序里面写了类似的代码
  1. mknod /dev/mixer
  2. open /dev/mixer
  3. ulink /dev/mixer
复制代码


所以你去ls是看不到的

论坛徽章:
0
10 [报告]
发表于 2011-06-22 16:57 |只看该作者
能力所限,理解不了。
按我的理解来说,内核需要根据/dev/下设备对应的节点号什么的找到相应的驱动程序,最终把相应的调用交给驱动去完成。如果连这个设备都没有,内核怎么知道对该设备的操作交给哪个驱动去完成呢
除非,内核被hack了,像某些root kit那样截获open调用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP