首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Linux】为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文解答)

【Linux】为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文解答)

作者头像
YY的秘密代码小屋
发布2024-10-14 08:39:04
发布2024-10-14 08:39:04
6810
举报
文章被收录于专栏:C++系列C++系列

一.前情回顾:

1.查看文件元数据与inode编号

  • 我们使用ls -l的时候看到的除了看到文件名,还看到了文件元数据。
代码语言:javascript
复制
[root@localhost linux]# ls -l
总用量 12
-rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out
-rw-r--r--. 1 root root 654 "9月 13 14:56" test.c
  • 分别对应含义如下图所示
  • 使用ls -li,还可以看到 inode编号
代码语言:javascript
复制
[root@localhost linux]# ls -l
总用量 12
54329 -rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out

2.硬链接文件不属于真正意义上的文件

※为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号。

  • 我们对test2创建一个硬链接文件test1.hard.link
  • 发现 二者inode编号一致

3.Linux中不允许用户对目录建立硬链接文件

  • 为了1. 防止目录循环引用 2. 保护文件系统结构完整性 3.简化文件系统设计,Linux中不允许用户对目录建立硬链接文件

二.解析部分:

  • 我们分别创建一个普通文件testfile和一个目录文件testdirls -li查看源目录;
  • 发现创建目录,硬链接数是2;创建文件时,硬链接数是1
  • 普通文件,只有 文件名 和inode编号有映射关系 所以硬链接数为1
  • 我们进入空目录,任何一个空目录, 下面都有两个隐藏的 硬链接文件
代码语言:javascript
复制
. 表示当前目录——————因为这个文件(指向)的inode,和目录文件本身的inode是同一个
..表示上一级目录
  • 所以目录文件,除了 文件名 和inode有映射关系 ,还有目录文件下面的硬链接. 和inode有映射关系 所以硬链接数为2

三.理解原理后,试着分析<在newdir1下,再创建newdir2,newdir1硬链接数变成3>

  • 在newdir1下,再创建newdir2,发现newdir1的硬链接数变成了3
  • 我们查看下newdir2的隐藏文件(硬链接),又有一个硬链接文件指向了他
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一.前情回顾:
    • 1.查看文件元数据与inode编号
    • 2.硬链接文件不属于真正意义上的文件
    • 3.Linux中不允许用户对目录建立硬链接文件
  • 二.解析部分:
  • 三.理解原理后,试着分析<在newdir1下,再创建newdir2,newdir1硬链接数变成3>
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档