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

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

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

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

  • 相关阅读:
    转:.net面试题及答案(一)
    高兴!
    游标中LOCAL的意思
    九度 1333
    在进程槽中为进程分配一个空闲位置并分配一个进程号
    USACO Section 1.2 Milking Cows
    九度 1334
    USACO Section 1.3 Mixing Milk
    USACO Section 1.3 Calf Flac
    USACO Section 1.3 Prime Cryptarithm
  • 原文地址:https://www.cnblogs.com/maizi-1993/p/5578648.html
Copyright © 2011-2022 走看看