linux下面连接文件有两种
- 软连接,symbolic link。软连接会创建一个inode。连接文件inode指向的block的内容是source的文件名。软连接是文件名的别名。
- 硬连接,hard link。硬连接不会为连接文件创建inode。连接文件的block记录了source的inode。
硬连接是文件内容的别名。无法创建目录的硬连接。目录的内容是文件名。不同路径下文件名肯定不同,因此需要将所有子文件建立硬连接,开销过大。
struct dentry {
struct inode d_inode; / Where the name belongs to - NULL is
struct dentry d_parent; / parent directory */
struct list_head d_child; /* child of parent list */
struct dentry_operations *d_op;
struct super_block d_sb; / The root of the dentry tree */
void d_fsdata; / fs-specific data */
unsigned char d_iname[DNAME_INLINE_LEN_MIN]; /* small names */
……
};
dentry的结构体⬆️