• 硬连接和软连接


    硬连接(hard link)

    创建:

    ln source target.hlink

    | filename | inode # |
    +--------------------+
                    \
                     >-------> | permbits, etc | addresses |
                    /          +---------inode-------------+
    | othername | inode # |                         \
    +---------------------+                          `--------> | data | | data | etc
                                                                +------+ +------+

    多个硬连接指向同一个inode。引用计数为0且无进程打开时可以删除文件内容。

    缺陷:

    不能为目录创建(hard link not allowed for directory);不能用在不同的文件系统。

    Tips:

    1. 目录是一种特殊的文件,在构建的过程中产生两个特殊的文件: ...

    . 是指向当前目录文件的硬连接, .. 是指向当前目录父目录的硬连接。/ 是个例外,.. 也指向/ 。

    2. 创建隐藏的临时文件

    #include <stdio.h>
    #include <unistd.h>
    
    int main() {
      FILE *fp = fopen("some.hidden.file","w+");
      sleep(5); // ls to find the file
      unlink("some.hidden.file"); // deletes the filename part
      // some.hidden.file no longer has a filename and is truely hidden
    
      // can still access the data part
      {
        fprintf(fp,"This data won't be found any more\n");
        rewind(fp);
        char str[80];
        fgets(str, 80, fp);
        printf("%s", str);
      }
      sleep(5);
      fclose(fp); // finally release the data part
    }

    软连接(soft link / symbolic link)

    创建:

    ln -s source target.slink

          | filename | inode # |
          +--------------------+
                          \
                           `-------> | permbits, etc | addresses |
                                     +---------inode-------------+
                                                        /
                                                       /
                                                      /
      ,----------------------------------------------'
     (
      `-->  |"/path/to/some/other/file"|
            +---------data-------------+
                    /                      }
      ,~ ~ ~ ~ ~ ~ ~                       }-- (redirected at open() time)
     (                                     }
      `~~> | filename | inode # |
           +--------------------+
                           \
                            `------------> | permbits, etc | addresses |
                                           +---------inode-------------+

    软连接也是一种特殊的文件,存储了其指向文件的路径。

    缺陷:

    额外的io操作;占用更多硬盘空间;source移动后不能访问。

  • 相关阅读:
    C语言 assert
    Java6上开发WebService
    unity3d绘制贴图
    unity3d物理引擎
    unity3dVisual Studio Tools for Unity快捷键
    unity3d小案例之角色简单漫游
    unity3d射线(Ray)
    unity3d准备工作
    unity3d编辑器结构
    unity3d碰撞检测
  • 原文地址:https://www.cnblogs.com/chenkkkabc/p/2968577.html
Copyright © 2020-2023  润新知