为" name="description" />
d_inoMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为702,d_name为字符串” file.c”。如果现在要在/usr下为file.c取一个别名,即建立一个到file.c的链接file1.c,系统并不真的创建一个新的文件,而仅仅在目录文件usr中添加一项d_ino为702,但d_name为”file1.c”的新登记项。类似的,若要在别的目录下创建一个到file.c的链接,也只需在该目录文件中添加d_ino为702,但d_name为链接名的登记项。
由硬链接的实现可以看出,由于d_ino仅能够对本文件系统内的索引节点进行索引,因此,不能够在两个文件系统之间创建硬链接(不能保证d_ino唯一)。为了解决这个问题,引入了符号链接。与硬链接不同,创建一个符号链接的同时也创建了一个新文件,即分配了一个新的磁盘索引节点。只不过,该文件的内容是所要链接的文件在系统中的路径名,故,要访问原文件,首先要读取这个路径名,再由其查找到原文件的磁盘索引节点,也因此,倘若原文件所在的文件系统的挂载点发生变化,那么该链接就不再可用。
该表反映了各个文件系统之间的链接关系,每一个挂载的文件系统都要在该表中占据一项。
struct mount {
int m_flags ; // 文件系统状态
dev_t m_dev ; // 逻辑设备号
struct inode * m_inodep ; // 挂载目录的内存索引节点指针
struct buf * m_bufp ; // 存放被挂载文件系统的超级块
struct inode * m_mount ; // 被挂载文件系统的根索引节点指针 }