`
zhengdl126
  • 浏览: 2543006 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Unix操作系统硬链接与符号链接的区别

 
阅读更多

Unix操作系统有很多值得学习的地方,这里我们主要介绍Unix操作系统中的硬链接与符号链接的区别,大家一起来学习下吧!硬链接典型的特征就 是,所有文件的i节点号是一样的;硬链接不是文件拷贝,只是增加了一个i节点链接(或者说增加了一个入口指针),所有的硬链接都是权力(权限,大小)均等 的,修改任意一个,其他也被修改。

i节点结构中有一个很重要的字段就是链接数。所以删除一个文件,不一定就会真的释放其i节点,删除文件其实是在目录文件中,根据文件名找到对应的i节点,先把i节点链接数减一,再删除目录结构中文件记录,当且仅当i节点接数为0时,才真的释放对应的i节点。

 

 

 

总结一下硬链接与符号链接的区别:

1、硬链接是通过i节点来关联文件;
不同的文件系统都有自己独立的i节点,所以硬链接不能跨越文件系统,不能指向目录;

2、符号链接是通过文件名来关联文件;
即便是原文件删除,符号链接依然可以存在,但是指向是空。只是可以独立于原文件而存在,新建文件后可以自动指向新的文件。符号链接可以跨越文件系统,可以指向目录。

3、硬链接用ln创建,符号链接用ln -s创建;

4、符号链接类似windows里的快捷方式,硬链接有点类似共享;

5、lstat()可以获取链接文件本身的信息,stat()函数获取指向文件的信息。

 

 

 

UNIX目录中有2中类型的链接——硬链接和符号链接。
 
硬链接本身就是一个目录项,(比如文件名+索引节点号),可以将文件名与文件的位置关联起来;
符号链接也称软链接,是指存储了一个字符串的文件。这个字符串可以在路径名解析的过程中,用于修改路径名。
 
----------------------------------------------------
  假设文件是用索引节点来表示的
----------------------------------------------------
 
目录项对应于单个链接,但是一个索引节点可能有几个链接的目标(对应几个目录项),因此索引节点中包含一个对链接到索引节点的链接数的计数。当用open()创建一个新的文件时,操作系统就会创建一个新的目录项,并分配一个空闲的索引节点来表示该文件。
                                                       图 1
图1显示的就是/dirA下的name1文件的目录项,索引节点为12345,有一个链接,它的第一个数据块为23567。 文件很小,所有内容都包含在一个块中。
 
(1)创建一个硬链接
可以使用命令ln或者函数link()为文件创建一个链接。
 
#include <unistd.h>
int link( const char *path1, const char *path2 );
 
上述操作为path1指定的一个已经存在的文件(比如/driA/name1)创建一个新的目录项,这个文件位于path2指定的目录下(比如/driB/name2);并增加相应的索引节点链接计数,不再使用额外的磁盘空间。
如图2:
                                                 图 2
(2) 创建一个符号链接
符号链接是一个包含了另一个文件或目录名字的文件。引用符号链接的名字会使操作系统去定位对应于那个链接的索引节点,知道最终遇到一个硬间接和一个真正的文件为止。如果过了一段时间,系统没有找到文件,则放弃并返回ELOOP错误。
 
使用ln命令带选项-s 或者函数symlink(),都可以创建符号链接。
 
#include <unistd.h>
int symlink ( const char *path1, const char *path2);
 
这里path2是新创建的链接,新链接指向path1 。如图3:
                                                                       图 3
 
这里,符号链接使用了一个新的索引节点(13579),该索引节点包含了说明它是一个符号链接的信息。符号链接至少需要一个数据块(如15213),数据块中包含了/dirB/name2要链接的文件名称,这里即为/dirA/name1。
 
分享到:
评论

相关推荐

    Unix操作系统源码分析

    《Unix操作系统源码分析》是一本深度探讨Unix操作系统内核的专著,旨在为Unix操作系统编程人员和学术界提供深入的理解和洞见。通过详细分析源代码,本书旨在揭示Unix系统的工作原理,帮助读者掌握其核心机制,从而...

    UNIX操作系统培训教材.pdf

    ### UNIX操作系统培训教材知识点梳理 #### 1. UNIX操作系统概述 - **简介**: UNIX操作系统是最早广泛应用于多种计算平台的操作系统之一,起源于1969年的贝尔实验室,并于1975年正式对外发布。它能够运行在从微型...

    华为UNIX操作系统培训教材

    ### 华为UNIX操作系统培训教材知识点详述 #### 第1章 UNIX操作系统概述 - **UNIX操作系统简介**:UNIX,作为一款历史悠久的操作系统,自1969年在贝尔实验室诞生以来,便以其卓越的性能和稳定性在全球范围内获得了...

    UNIX操作系统培训教材(华为公司资料)

    《UNIX操作系统培训教材》是华为公司提供的一份深入学习UNIX操作系统的教材,旨在帮助读者掌握这一强大而广泛使用的操作系统。本教材涵盖了从基础概念到实际操作的诸多方面,旨在提升学员对UNIX的理解和使用能力。 ...

    unix操作系统培训教材

    **UNIX操作系统概述** UNIX操作系统是计算机科学历史上一个里程碑式的创新,由Ken Thompson和Dennis Ritchie在1969年的贝尔实验室开发。自那时起,它经历了多次版本更新和改进,逐渐成为一种广泛应用于各种计算平台...

    UNIX操作系统培训教材

    《UNIX操作系统概述》 UNIX操作系统,自1969年诞生以来,已成为全球最广泛使用的操作系统之一,尤其在服务器和科学计算领域具有显著地位。它以其简洁、强大的命令行界面和丰富的开发工具著称,是许多现代操作系统...

    UNIX操作系统命令简介.doc

    在IT领域,UNIX操作系统是一个历史悠久且广泛应用于服务器、科学计算及工程领域的高级操作系统。这篇文档主要介绍了UNIX操作系统的基础知识,包括其概述、常用操作以及文件系统。以下是对这些内容的详细说明: 第1...

    华为unix操作系统培训教材.doc

    【华为UNIX操作系统培训教材】 UNIX操作系统是全球广泛使用的多用户、多任务的网络操作系统,尤其在服务器领域有着深厚的根基。本教材将详细讲解UNIX的基本概念、常用操作以及文件系统,帮助读者快速掌握这一强大...

    UNIX操作系统教程

    在IT领域,UNIX操作系统是一个历史悠久且广泛应用于服务器、科学计算及网络设备的操作系统。本教程旨在深入探讨UNIX系统的核心概念、基本操作以及高级特性,帮助读者掌握这一强大的工具。 一、UNIX系统概述 UNIX...

    UNIX操作系统基础专题-华为内部培训资料

    ### UNIX操作系统基础专题知识点 #### 1. UNIX操作系统概述 - **UNIX操作系统简介** UNIX是一种历史悠久且广泛使用的计算机操作系统。它最早于1969年由贝尔实验室开发,并于1975年对外发布。自那时起,UNIX便...

    UNIX操作系统培训教材new.doc

    在深入探讨UNIX操作系统之前,我们首先来了解一下这个操作系统的基本概念。UNIX操作系统,作为一个历史悠久且功能强大的多用户、多任务操作系统,被广泛应用于科学计算、网络服务、软件开发等多个领域。它的设计哲学...

    UNIX操作系统与LandMark解释系统培训教材.doc

    **UNIX操作系统** UNIX操作系统是一种强大的多用户、多任务操作系统,最初由贝尔实验室的肯·汤普逊和丹尼斯·里奇开发。它以其稳定、高效和可移植性著称,被广泛应用于科研、教育和企业环境中。UNIX的核心设计原则...

    UNIX试卷

    【UNIX试卷】试题主要涵盖了UNIX操作系统的基础知识,包括系统核心结构、内存管理、常用命令、文件系统、进程调度、Shell编程、文件类型以及命令格式等多个方面。以下是对这些知识点的详细解析: 1. **UNIX系统核心...

    华为Unix培训资料

    【华为Unix培训资料】是专为初学者设计的教程,旨在提供实用的UNIX操作系统知识。在深入了解这份资料之前,我们先来概述一下UNIX操作系统的基本概念和关键知识点。 **第1章 UNIX操作系统概述** 1.1 **UNIX操作系统...

    UNIX操作系统.pdf

    UNIX操作系统是一种广泛使用的多用户、多任务的操作系统,尤其在服务器和网络管理领域中占据了重要地位。本教程主要介绍UNIX的基本操作,包括登录、文件处理和目录管理。 1. **登录与登出** - 登录工作站:通过`...

    UNIX操作系统 -汪济民 徐智利 编

    【UNIX操作系统概述】 UNIX操作系统是历史悠久且广泛应用的多任务、多用户操作系统,起源于1969年的贝尔实验室。其特点主要包括: 1. **多任务**:UNIX支持多个任务同时运行,通过分时机制(time sharing)使得多...

Global site tag (gtag.js) - Google Analytics