添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

操作系统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 属地江苏