当前位置: 首页 > news >正文

深入理解文件硬链接、软链接与引用计数的那些事

在操作系统中,文件的硬链接和软链接是两个重要概念,而引用计数则与文件的存在与否密切相关。下面结合具体场景,为你详细解析它们之间的关系。

场景回顾与分析

场景一:文件、硬链接、软链接的创建与删除

  1. 创建文件 i.txt,此时其初始引用计数为 1。
  1. 为 i.txt 创建硬链接 j.txt,由于硬链接会共享 inode,引用计数随之变为 2。
  1. 接着为 i.txt 创建软链接 k.txt,软链接只是记录原文件路径,不影响原文件引用计数,所以 i.txt 的引用计数仍为 2。
  1. 当删除原文件 i.txt 后,硬链接 j.txt 的存在使得文件的引用计数变为 1,而软链接 k.txt 因指向的路径失效成为断链。

这里有个关键问题,软链接 k.txt 对应的文件引用计数是多少?其实,软链接本身是独立文件,有自己的 inode,它不参与原文件的引用计数计算。删除 i.txt 后,k.txt 指向的目标不存在,此时讨论它对应的文件引用计数没有实际意义,可理解为指向无效目标,计数无意义,若非要对应,可认为是 0。

场景二:多个软链接指向同一文件

  1. 创建文件 c.txt,初始引用计数为 1。
  1. 为 c.txt 创建软链接 d.txt,由于软链接不影响原文件引用计数,c.txt 的引用计数还是 1。
  1. 再为 c.txt 创建软链接 e.txt,同样,c.txt 的引用计数依旧保持 1。

此时,软链接 d.txt 对应的文件(即 c.txt)的引用计数仍为 1。因为无论创建多少个软链接指向原文件,都不会改变原文件的引用计数,软链接仅作为指向原文件路径的独立文件存在。

核心知识总结

  • 硬链接:与原文件共享 inode,会影响原文件的引用计数。创建硬链接时,引用计数加 1;删除硬链接时,引用计数减 1。只有当引用计数为 0 时,文件数据才会被真正删除。
  • 软链接:是独立的文件,有自己的 inode,仅记录指向原文件的路径,不参与原文件的引用计数计算。原文件删除后,软链接会因路径无效而失效。
http://www.dtcms.com/a/335243.html

相关文章:

  • 机器学习相关算法:回溯算法 贪心算法 回归算法(线性回归) 算法超参数 多项式时间 朴素贝叶斯分类算法
  • 超详细yolo8/11-pose人体姿态全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
  • 8.16、8.17 JavaWeb(MyBatis P116-P134)
  • 【网络与爬虫 00】试读
  • lcx、netcat、powercat--安装、使用
  • 【RH134知识点问答题】第 10 章:控制启动过程
  • 深入浅出OpenGL的glDrawArray函数
  • 设计索引的原则有哪些?
  • 数据结构初阶(16)排序算法——归并排序
  • w嵌入式分享合集66
  • 开发一款多商户电商APP要多久?功能拆解与源码技术落地方案
  • vulhub-driftingblues9缓冲区溢出攻击提权
  • 写一个linux脚本,要求实现查找9010端口,如果端口存在则kill,否则不处理,返回对应的提示
  • LE AUDIO----COMMAND AND EVENT
  • ArrayList的扩容源码分析
  • colmap
  • ABB焊接机器人弧焊省气
  • windows扩展(外接)显示器位置调节
  • 狗品种识别数据集:1k+图像,6个类别,yolo标注完整
  • 利用Qwen大模型进行c++11并发库的学习,与时俱进!!!!
  • File 类的用法和 InputStream, OutputStream 的用法
  • C#高级用法:元组
  • pidgen!DecodeProdKey函数分析之iDecodedBytesMax
  • docker安装mongodb及java连接实战
  • 视频理解综述
  • 【异步】js中异步的实现方式 async await /Promise / Generator
  • 码上爬第十一题【协程+wasm】
  • 博弈论07——Lemke-Howson 算法
  • STM32-GPIO实践部分1-跑马灯实验
  • 【Java基础面试题】Java基础概念