LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 914|回复: 5

关于设备文件的特殊性,请教

[复制链接]
发表于 2006-4-12 23:25:47 | 显示全部楼层 |阅读模式
有三个问题:
1.设备文件是一种特殊的文件,它的特殊性体现在什么地方?像/dev/fd0和/mnt/floppy有什么区别呢?
2.如果我用fopen函数打开设备文件,那么fp到底指向什么呢?如果向里面写东西,具体会发生什么事情呢?
3.我想读写软盘的绝对扇区,应该怎么做?

谢谢!
 楼主| 发表于 2006-4-13 19:35:40 | 显示全部楼层
dddddddddddddddddddddd
回复 支持 反对

使用道具 举报

发表于 2006-4-14 09:08:15 | 显示全部楼层
举个例子来说,比如我打开了/dev/hdc设备,它装载了一个DVD video光盘。
那么我怎么操作呢,这里面就可以有lseek,read,write可以用。但是有一些特殊的操作就要通过ioctl,例:
dvd_struct s;
ioctl(fd, DVD_READ_STRUCT, &s);
我就可以获得dvd的相关结构信息,这里面就包含了layer,copyright,diskkey等一些信息。具体可以参阅"linux/cdrom.h"。
所以呢,对于设备文件来说。lseek,read,write都是一样的,唯独是ioctl确是极大的不同。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 12:14:24 | 显示全部楼层
Post by realtang
举个例子来说,比如我打开了/dev/hdc设备,它装载了一个DVD video光盘。
......


谢谢您的回复!

还有个问题:既然我可以用fopen打开/dev/fd0读取软盘的绝对扇区,那么是不是说通过/dev/fd0就已经可以访问软盘了,可是为什么还要挂载呢?挂载到/mnt/floppy后,通过这两个地方都可以访问软盘,是不是浪费空间呢?这样设计有什么好处呢?

还有:直接fopen设备文件,就可以打开相应的设备,这个设备文件到底起了什么作用呢?它到底是怎么跟相应的设备对应起来的呢?
回复 支持 反对

使用道具 举报

发表于 2006-4-14 12:58:35 | 显示全部楼层
纠正一下,不是用fopen而是用open,返回的不是FILE*,而是文件描述子。
是不需要mount就可以访问到某个块设备的扇区的。
而mount之后呢,块设备就映射到了文件系统。经过这层的抽象就进入了更高的层次。也就是VFS的概念。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 18:07:14 | 显示全部楼层
Post by realtang
纠正一下,不是用fopen而是用open,返回的不是FILE*,而是文件描述子。


哦?
难道说fopen不能用来打开设备文件?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表