再次复习APUE

来源:互联网 发布:nginx虚拟主机是什么 编辑:程序博客网 时间:2024/04/29 13:51

重看APUE,做些笔记。

没心没肺的玩了一个国庆,唉,不忍直视。

从现在开始,好好的看书。争取拿到Offer。


硬链接和软链接:

    每个文件都有名字,这个是我们用户空间可以看到的,我们把它称为目录。每个目录都绑定着一个i节点信息,即指向着一个具体的文件。

所以硬链接指的就是,有两个目录同时绑定到这个i节点上,代表的是同一个文件。所以我们删掉了这个硬链接,其实只表示指向这个i节点的数量-1,不会删除这个文件 ,只有当i节点数目的指向数量减少为0的时候,才会删除这个文件。

     那么硬链接有什么实用之处呢? 可以备份重要的文件啊,可以把相对重要的文件都保存起来,这样即使不小心删除了当前目录,只要备份的硬链接没有删掉,文件就还在。

那有什么缺点呢? 在一个文件系统中,i节点信息都是分配好的,有各自的管理方法,所以硬链接不能跨文件系统 ,并且不能链接目录,否则陷入死循环。

     所以出现了软链接:

软连接就是个快捷方式,即这个链接文件的内容,注意,这里是内容,是数据区的数据指向了另一个文件的目录。而不是i节点信息,所以目录被删,则链接失效。 但是这样可以跨系统了。因为本质上就是通过了中间变量。


文件IO

无数次的看文件IO了。 

open,read ,write.等等函数,都是系统调用层面上的,都是无缓冲的对文件进行操作。所以对象是文件描述符。

而 fopen,fread,fwrite等等就是C库上面的,属于用户空间的,具有缓冲,是流处理函数。 那么什么是缓冲,打个比方。你要写数据到文件中,而文件位于磁盘上。那么有缓冲就是先把你的数据写入内存,然后等到把内存填满之后呢再一次性写入文件上,这个就是全缓冲。而行缓冲就是写一行,或者是遇到了换行符号就写。对于一般的文件,都是全缓冲,对于终端设备,就是行缓冲了。

所以我们使用的还是带有缓冲的,这样可以避免每次都涉及到系统调用,浪费时间。所以这里分为三种方式去读写文件。

一,一个一个字符的去读写。 getc, fgetc

二,一行一行字符的去读写。gets,fgets

三,上面两种都不实用的情况,即整个去读取文件。  fread,fwrite。





0 0
原创粉丝点击