当前位置:嗨网首页>书籍在线阅读

13-链接

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.3 链接

回顾一下关于目录的讨论,目录中每个名字至inode的映射被称为链接。根据这个简单的定义,链接本质上不过是列表(目录)中一个指向inode的名字,从这个定义来看,并没有限制一个inode的链接的数目。因此单个inode(或者说单个文件)可以同时由/etc/customs和/var/run/ledger指向。

在这个例子中,还有一点需要注意:因为链接映射至inode,且不同文件系统的inode编号是不同的,/etc/customs和/var/run/ledger必须位于同一文件系统。在一个文件系统,指定文件的链接数可以很大。唯一的限制是用来表示链接树的整数数据类型的范围。在所有链接中,没有一个链接是“原始”或“初始”链接。这些链接都指向同一个文件,并共享文件状态。

我们称这种类型的链接为硬链接。文件的链接数可以是0、1或多个。大多数文件的链接数是1,也就是说只有一个目录项指向该文件,但有些文件可能有两个或甚至多个链接。链接数为0的文件在文件系统上没有对应的目录项。当文件链接计数达到0时,文件被标记为空闲,其占用的磁盘块就可重用[5]。当进程打开了这样一个文件时,文件仍在文件系统中保留。如果没有进程打开该文件,文件就会被删除。

Linux内核通过“链接计数”和“使用计数”来进行管理。使用计数是指文件被打开的实例数的计数。只有当某个文件的链接计数和使用计数都为0时,该文件才会从文件系统中删除。

另一种链接是符号链接,它不是文件系统中文件名和inode的映射,而是更高层次的指针,在运行时解释。符号链接可跨越文件系统,我们将稍后讨论它。