文件操作一

恩,恩恩,好紧张,有木有。

暂时告别了shell,开始了文件操作的旅程。由于之前对linux文件有过一些了解(不过没有了解,从现在开始了解也没有关系,后来居上就是说,后认识的人能避过前人遇到的错误,踩在已经证实的正确的路上,在此感谢linus以及那些前辈们的披荆斩棘),所以看起来这一部分还是很希望能更进一步了解文件系统的。加油,吼吼!!

文件操作,学习怎么做文件系统,这个还是很重要的。主要要了解

1.  文件和设备

2. 系统调用 (实现与内核,以及下层交互的途径哦)

3. 库函数 (先认为,库函数是系统调用的表层)

4. 文件访问的底层操作 (so important,eh,ioctl?? powerful ,mysterious)

5. 对文件进行管理

6. 标准I/O库

7.格式化的输入和输出

8. 文件和目录的维护 (这个不是算在对文件管理里面么,不过这个应该是涉及文件以及目录的添加删除问题)

9. 扫描目录 (so important, but i think there are many ways to achieve this.)

10. 错误及其处理

11. /proc文件系统(这个牵涉到linux内核结构以及运行问题,弄清楚比较好)

12. fcntl 和mmap (说是有点复杂,但是搞清楚理论还是不太难理解的。关键是解决问题的思路。呵呵,这就是所谓linux思想吧)


恩,后面一点一点的丰富起来吧。


1. 文件和设备

                        linux的一贯思路,把设备当文件来用,不但统一了设备接口,而且达到了隐藏设备特性的目的,更有利于应用层开发的人员开发设备相关程序。恩,不过也有不好的地方,让想深入内核学习的孩子们(比如我等)学习起来费劲了不少。注明一点,是大多数,almost,不是所有,not all。有些是不必要。

                        既然是文件,那么就有文件操作的特征函数 open 、read、 write、close,既然实质上是设备,那就就还是要有点不同的,比如ioctl(哈哈,灵魂啊,亲)

                        首先区别文件和目录,这两类,在我看来都是文件的一种,不过还是有不少区别,

                                     文件(这里是指非目录文件)除了自身包含的内容以外,还要有一个名字和属性,这些东西包括了文件的信息。包括文件的创建时间,访问时间,修改时间,访问权限,文件长度,存放位置等等(文件操作的精髓之一)。我们命名为inode(节点)的数据结构来存放。目录结构仅仅是出于方便用户查找和使用为目的而做的交互方式(名字算是交互的一种)。

                                      目录是文件(这话,有点让我想打人)。首先要明确这一点。它是用来保存其他文件的节点号和名字。目录文件中的每一项数据都指向某一个文件的节点,删除文件名就是删除了与之对应的链接(理解这个可以通过目录结构的目的去想。)

                        正题,设备(此处包括虚拟设备)比较重要的有三个 ——/dev/console   /dev/tty    /dev/null

先说第一个,就是系统控制台,错误信息和诊断信息通常都发到这个设备上。           第二个,如果一个进程有控制终端的话,那么特殊文件/dev/tty就是这个控制终端的别名。(通过cron运行的进程就没有控制终端)有点像和进程交互的一个端口,可以通过它访问许多不同的纹理设备            最后一个,空设备。写到这个设备的数据都被扔了,可以当回收站来用,不过特点是不能回来了,送进去就没有了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值