首页 > 其他分享 >操作系统链接文件

操作系统链接文件

时间:2024-08-07 18:52:49浏览次数:11  
标签:文件 char 操作系统 源文件 inode 链接 block

链接文件

Linux的文件系统会把磁盘分区成主要的两大部分
  • inode信息块

    • 默认128B,里面主要记录文件的权限、大小、所有者、修改时间等基本信息

  • block数据块

    • 默认4Kb,记录了文件名和真正的文件数据内容

  • 每个文件必须拥有一个唯一的inode以及若干个block组成,读取文件需要借助文件所在目录的block中记录的文件inode号,找到该文件的inode,inode中记录了该文件的block位置,从而最终读取文件

什么是软、硬链接文件?
硬链接文件
  • 硬链接文件没有自己inode和block,只是在不同的目录下复制了一份源文件的inode信息,可以通过该inode找到同一份源文件的block

软链接文件
  • 软链接文件会创建自己的新的inode和block,它的inode也是为了找到自己的block,而在它的block中存储的是链接源文件的文件名和inode信息

区别
  • 删除源文件,只是删除源文件的inode块,但是硬链接文件不受影响,而软链接文件就无法访问了

  • 当一个文件的硬链接数删除成0时,文件才被真正的删除

  • 修改硬链接文件内容,源文件也会被修改;而修改软链接的block,不会改变源文件的内容,反而会让软链接无法找到源文件

  • 硬链接不能链接目录,软链接可以

硬链接文件的创建和删除:
int link(const char *oldpath, const char *newpath);
功能:创建硬链接文件
与命令 link \ ln 功能一样
​
int unlink(const char *pathname);
功能:删除文件的硬链接,文件的硬链接数-1
   
int remove(const char *pathname);
功能:与unlink一致,都可以删除普通文件以及硬链接文件
注意:如果删除的文件正在被打开,则会等待文件关闭后删除
注意:如果删除的是软链接文件,则会只删除软链接文件本身,而不会对源文件有任何影响,而且没有任何一个可以借助软链接来删除链接对象文件的函数
软链接文件的创建与读取:
int symlink(const char *target, const char *linkpath);
功能:创建软链接文件
对应命令:ln -s 
​
ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);
功能:获取到软链接文件自身的block内容,也就是它链接对象的文件名,而不会获取到链接对象的文件内容
如果想要读取链接对象的文件内容,还是通过read\write进行

标签:文件,char,操作系统,源文件,inode,链接,block
From: https://blog.csdn.net/zzt_is_me/article/details/140999042

相关文章

  • 前端导入导出文件(前后端不分离)
      有时候在对硬件传送过来的数据进行处理后,需要将这些数据显示在折线图上,从而来观察这些数据是怎样变化的,这个好办,但有时候又要求需要将折线图上面显示的数据全部导出到一个文件中,并且有时候又要求在文件中改变数据后,再将文件中的数据重新导入到折线图中,哪有该如何写呢? ......
  • 【后渗透】windows远程下载文件命令汇总
    BitsadminCertutilpowershellFTPcscriptcmdl32Mspub.exeConfigSecurityPolicy.exeInstallutilPresentationhost.exeXwizard.exe其他前言我们在渗透过程中,当获取到一个shell能够执行命令的同时,想要上线c2,就要先将文件传输到目标,并用到一些命令行中的下载命令如BIT......
  • 《双人成行》游戏闪退弹窗“找不到anadius64.dll无法继续执行”问题怎么修复?双人成行
    当玩《双人成行》出现游戏崩溃并提示缺失anadius64.dll文件时,可以这样解决。首先去可靠的网站下载该文件并放置到指定位置,或者使用修复工具进行修复,也可以检查系统更新,确保系统环境正常,从而解决这一问题。本篇将为大家带来双人成行游戏崩溃缺失anadius64.dll文件解决方法的内容......
  • 《魔兽世界》游戏闪退显示找不到mss32.dll文件怎么办?魔兽世界游戏崩溃弹窗“缺失mss32
    在玩《魔兽世界》时,如果遇到游戏崩溃并弹窗提示“缺失mss32.dll文件”,不要慌张。可以通过在网上搜索并下载该文件,放置到指定目录,或者使用相关修复工具来解决这一问题,让你能重新顺利进入游戏,继续畅玩。本篇将为大家带来《魔兽世界》游戏闪退显示找不到mss32.dll文件解决办法的......
  • uniapp 解决andorid10以上App文件存储到手机盘目录
    file.js方法:/**@Descripttion:*@version:V1.0.0*@Author:BaiYayong*@Date:2024-08-0610:25:48*@LastEditTime:2024-08-0715:50:33*//*使用该类应开启以下权限(读取和写入)<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STOR......
  • C#读取BIFF4格式的Excel文件
    使用NPOI读取这种格式的Excel文件时会报错:ThesupplieddataappearstobeinBIFF4format.HSSFonlysupportstheBIFF8format,tryOldExcelExtractor如果使用OldExcelExtractor类的话,只能提取成文本,无法结构化读取。 使用ExcelDataRead库https://github.com/ExcelDat......
  • 修改.gitignore里面曾经追踪过的文件变成不追踪
    .gitignore 只能忽略那些原来没有被追踪(tracked)的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的解决方法就是,先把本地缓存删除(改成未track状态),然后再提交:gitrm-r--cached.gitadd.gitcommit-m'update.gitignore'gitpush 具体步骤如下......
  • 操作系统--知识点
    操作系统1.1_1操作系统的概念、功能和目标作为用户和计算机硬件之间的接口提供的功能命令接口(联机命令接口|脱机命令接口)程序接口GUI(图形用户界面win|ios|andrio)目标方便用户使用1.1_2操作系统的特征并发|并行并发:多个事件交替发生(宏观同时发生、微观交替进行)并行:多......
  • 将终端输出重定向到文件
    我有一个python程序,我在树莓派4上从控制台运行。在程序中,有一些事件会在终端上生成一些输出。第一个问题:是否有任何选项可以显示所有我的python程序的列表框中的终端输出?也许将控制台输出写入文件,然后从文件中读取它以将其显示在我的程序上。我读到了......
  • 【CANoe制作DataBase(DBC文件)】
            本篇是CANoe使用制作DBC文件,DBC是DatabaseCan的缩写,其代表的是CAN的数据库文件,里面定义了CAN总线上有哪些CAN节点、每个节点各自发出什么CAN报文,每个报文下又有哪些信号,CAN总线不管是开发、测试还是分析,DBC文件都是必不可少的。目录        本篇......