操作系统4:硬链接和软链接
6 个月前
硬链接
两个不同的文件名,有相同的inode,也就自然指向相同的文件内容。
- 创建一个新的链接,inode上的计数会加1;
- 删除一个链接,inode上的计数会减1,当计数为0时,才删除inode所指内容;
- 不能对目录创建硬链接,因为inode信息里包含父子目录关系,所有的硬链接都共用inode,这样会导致目录关系的混乱;
- 也不能跨文件系统创建硬链接,因为跨文件系统的inode号是复用的
- 只能对已存在的文件创建硬链接
我的理解:硬链接就像c++中的shared_ptr,即其实都指向同一个内容,而且有自动计数机制,当最后一个指针删除,内容自动析构了。而且shared_ptr也不能在父子类中循环引用(类比不能创建目录的硬链接),会导致无法释放资源。
软链接
两个不同的文件,有不同的inode,其中一个文件的内容就是另一个文件的路径。
- 可跨文件系统创建软链接
- 可对目录创建软链接
- 可对不存在的文件创建软链接
- 创建软链接时,inode上的计数值并不会增加
- 删除软链接并不会影响原文件
- 删除原文件,软链接会失效
我的理解:软链接就像c++中的普通指针,只是记录了内容的地址,删除指针并不会导致内容析构。删除内容,指针就成野指针了。
可以把硬链接当做文件本身,因为你实际上无法区分出硬链接和文件。
软链接本身是另一个文件,只不过文件内容是另一个文件的路径罢了。
编辑于 2022-12-12 18:26
・IP 属地江苏