zoukankan      html  css  js  c++  java
  • Linux的硬链接为何不能链接目录

    Linux中的目录文件是特殊的文件,其中的数据是一个关联列表的,像c++中的map,或者Python中的dict,保存每个文件名(包括子目录,Linux中一切皆文件!)到iNode的映射。iNode本质是一个指针,指向文件的各种属性信息。

    硬链接其实是“目录项”的等价词,这乍一看与我们的认知不符。我们常常认为“硬链接是为一个已有的对象创建一个额外的目录项”,但是硬链接用的最多的却是另外一种场景,就是当一个对象第一次被创建时,这时就要为这个对象创建一个目录项,这其实就是创建了一个硬链接!这就是建立了硬链接不仅可以实现从1到2的转变,更擅长实现从无到有的转变!

    一个目录被创建时,其内部的文件数据,即目录项,中就有两个目录随即被创建,即“.”和“..”。“.”指向当前目录,“..”指向父目录,其实这是两个硬链接!,因此每个目录的硬链接数至少为2!根目录“/”的父目录“..”是其本身,其他目录则不允许其父目录是自身。在遍历目录树的过程中,如果不跟踪遍历过得iNode号就无法检测循环。虽然“..”指向父目录,但是在内核遍历目录的时候,这是单独处理的。如果其他子目录被允许链接到父目录,就会导致循环,这很容易出错。

  • 相关阅读:
    JDBC 处理sql查询多个不确定参数
    网页跳转方法总结
    图片上传,直接在网页中显示(支持IE,谷歌,火狐浏览器)
    Oracle报 ORA-00054资源正忙的解决办法
    js对cookie的操作:读、写、删
    认识SignalR
    sql 查询结果用逗号分隔到一列里
    异步编程之await的使用
    应用程序池
    判断list重复扩展方法
  • 原文地址:https://www.cnblogs.com/maizi-1993/p/5578648.html
Copyright © 2011-2022 走看看