【文件系统】-4-软硬连接

软硬连接

1、 软连接

1.1、创建方法




bash 复制代码
ln -s test.exe link-test.exe






1.2、深入理解

观察test.exe与建立的软链接文件的属性细节:







我们发现,link-test.exe的inode number与test.exe不一样,说明他们是两个不同的文件。

作为一个独立的文件,软链接link-test.exe的内容存储的是test.exe的路径,那么访问软链接link-test.exe就能访问到test.exe本身。

1.3、使用价值

软链接存储的是目标文件的路径,即软链接可以当作windows下的快捷方式来使用。

软链接还有一个价值:

  • 用软链接文件链接一个库文件。未来这个库文件需要更新的时候,我们只需换上新的库文件,然后设置库文件新的软链接方式,但是软链接的文件名不变。这样一来,就算更新了库文件,我们也不需要跟着修改与库文件名相关的配置文件。

2、硬链接

2.1、创建方式

相比软链接,硬链接的创建只需去掉-s选项:




bash 复制代码
ln test.exe link-test.exe






2.2、深入理解

硬链接文件,与test.exe的inode number是一样的。也就是说,它们是同一个文件。

图中,"文件权限"与"拥有者"之间的数字,由"1"变为了"2"。这个数字就是硬链接数,表示一共有多少个文件名映射到同一个文件本身,相当于我们之前在C++的智能指针中学习的"引用计数"。

我们也可以理解为,link-test.exe是文件test.exe的"别名"。

如果硬链接数大于1时,删除文件只会让引用计数减一;只有当硬链接数等于1时,再删除文件就真的把所有数据都删除了。

2.3、使用价值

硬链接的使用价值之一,就是通过"引用计数"的方式,备份文件,藏到系统中的一个隐蔽的地方,而不需要真的拷贝文件。

我们也可以看一个有意思的实验。

创建目录,执行ll -i,我们可以看到文件.的硬链接数为2,这是因为该目录有本来的名字,和.:







再创建一个目录,该目录的硬链接数就变为了3,这是因为新创建的目录中,..对应的文件也是该目录,即该目录此时有了三个名字:







这三个名字,体现了硬链接的实际应用。

3、硬链接的限制

Linux中,目录文件可以进行软链接,但不可以进行硬链接。







软链接文件,是独立于目标文件的另外一个文件,当然inode number也不一样,对目录进行软链接没有问题。

硬链接文件的文件名,与目标文件的文件名,共同指向同一个文件inode number。当OS或者用户想要遍历整个目录的时候,遍历到硬链接文件的时候,又返回到目标文件处重新遍历。这就会导致整个目录中的"环型遍历",相当于陷入了死循环。

所以,Linux开发者制定了规定,不允许用户使用硬链接连接目录文件。

当然,目录文件中的. ..使用了硬链接技术连接目录文件,这是为了实现"当前目录"和"上级目录"这两个概念。未来开发过程中若涉及遍历目录的操作,开发者之间应共同约定 ,绕过. ..这两个文件。

相关推荐
1234567890@world3 小时前
正点原子 ATK-DLRK3568 嵌入式Linux系统开发手册V1.3 详细总结
linux·stm32·单片机
sun_weitao3 小时前
极简版 MCP 工具实现方案
java·linux·服务器
爱和冰阔落5 小时前
【Linux】线程安全进阶:单例模式、可重入函数与死锁排查
linux·运维·安全·单例模式
先知后行。5 小时前
pimpl
linux
q27551300426 小时前
AS8132 DP转HDMI 4K60(420)被动式 国产性价比AS方案
linux·算法·硬件架构·dash
刚入门的大一新生7 小时前
Linux-进程间通信2
linux·运维·服务器
电科_银尘7 小时前
【深度学习项目实战·02】Linux服务器环境搭建:从SSH登录到稳定运行项目
linux·服务器·深度学习
运维小斌8 小时前
麒麟 V10 部署 OceanBase:故障速查与验收清单
linux·数据库·oceanbase·麒麟
水饺编程8 小时前
第2章:Linux 基础,在 root 中创建用户账号
linux·c语言·汇编·1024程序员节