当前位置: 首页 > news >正文

文件属性与目录

⚫ Linux 系统的文件类型;

普通文件:存储数据,如文本文件、可执行文件等。
目录:用于组织文件和其他目录的特殊文件。
符号链接:指向另一个文件或目录的引用,类似于 Windows 中的快捷方式。
硬链接:指向文件的相同 inode 的链接,多个文件名共享同一数据。
块设备文件:用于与块设备(如硬盘)进行交互的特殊文件。
字符设备文件:用于与字符设备(如串口设备)进行交互的特殊文件。
套接字:用于进程间通信的特殊文件。

’ - ':普通文件
’ d ':目录文件
’ c ':字符设备文件
’ b ':块设备文件
’ l ':符号链接文件
’ s ':套接字文件
’ p ':管道文件

⚫ stat 系统调用;

int stat(const char *pathname, struct stat *buf);

buf:struct stat 类型指针,用于指向一个 struct stat 结构体变量

struct stat
{dev_t st_dev; /* 文件所在设备的 ID */ino_t st_ino; /* 文件对应 inode 节点编号 */mode_t st_mode; /* 文件对应的模式 */nlink_t st_nlink; /* 文件的链接数 */uid_t st_uid; /* 文件所有者的用户 ID */gid_t st_gid; /* 文件所有者的组 ID */dev_t st_rdev; /* 设备号(指针对设备文件) */off_t st_size; /* 文件大小(以字节为单位) */blksize_t st_blksize; /* 文件内容存储的块大小 */blkcnt_t st_blocks; /* 文件内容所占块数 */struct timespec st_atim; /* 文件最后被访问的时间 */struct timespec st_mtim; /* 文件内容最后被修改的时间 */struct timespec st_ctim; /* 文件状态最后被改变的时间 */
};

⚫ 符号链接与硬链接;

硬链接(Hard Link)
定义:硬链接是指向相同 inode 的多个目录项。多个硬链接可以指向同一个文件数据,但它们之间没有区别,都是该文件的直接引用。
符号链接(Symbolic Link / Soft Link)
定义:符号链接是一个特殊类型的文件,它包含一个指向另一个文件的路径名。符号链接相当于一个快捷方式,可以指向任意文件或目录。

⚫ 目录;

在这里插入图片描述

删除文件

unlink()系统调用
实质上是移除 pathname 参数指定的文件路径对应的目录项(从其父级目录中移除该目录项),并将文件的 inode 链接计数将 1,如果该文件还有其它硬链接,则任可通过其它链接访问该文件的数据;只有当链接计数变为 0 时,该文件的内容才可被删除。另一个条件也会阻止删除文件的内容—只要有进程打开了该文件,其内容也不能被删除。关闭一个文件时,内核会检查打开该文件的进程个数,如果这个计数达到 0,内核再去检查其链接计数,如果链接计数也是 0,那么就删除该文件对应的内容(也就是文件对应的 inode 以及数据块被回收,如果一个文件存在多个硬链接,删除其中任何一个硬链接,其inode 和数据块并没有被回收,还可通过其它硬链接访问文件的数据)。

使用 remove 函数删除文件
与 unlink()、rmdir()一样,remove()不对软链接进行解引用操作,若 pathname 参数指定的是一个软链接文件,则 remove()会删除链接文件本身、而非所指向的文件。

文件重命名

调用 rename()会将现有的一个路径名 oldpath 重命名为 newpath 参数所指定的路径名。rename()调用仅操作目录条目,而不移动文件数据(不改变文件 inode 编号、不移动文件数据块中存储的内容),重命名既不影响指向该文件的其它硬链接,也不影响已经打开该文件的进程(譬如,在重命名之前该文件已被其它进程打开了,而且还未被关闭)。


http://www.mrgr.cn/news/60731.html

相关文章:

  • vite 创建了一个项目后,如何实现工程化
  • 【Unity实战笔记】第二一 · 基于状态模式的角色控制——以UnityChan为例
  • 聚链成网,趣链科技参与 “跨链创新联合体”建设
  • 异步通信介绍
  • 什么是同步?什么是异步?各自优缺点?
  • python对文件的读写操作
  • 一个简单的图像分类项目(三)编写脚本:参数设置
  • Python学习-列表基本操作
  • MODSI EVI 数据的时间序列拟合一阶谐波模型
  • Pandas简介
  • 数组排序简介-插入排序(Insertion Sort)
  • 阿里巴巴运营技巧分享
  • 【c++篇】:探索c++中的std::string类--掌握字符串处理的精髓
  • Ubuntu虚拟机的安装以及相关文件配置(保姆级攻略)
  • 多个立方体盒子组成
  • HTML的总结作业
  • C++设计模式创建型模式———简单工厂模式、工厂方法模式、抽象工厂模式
  • MambaAD 5总结 分析
  • 前端必备的环境搭建
  • 一文理解平流层温度变化规律
  • Java中如何在两个线程间共享数据
  • 监控易系统:引领智能阈值管理与网络设备监控的创新
  • 信号 和 槽
  • “雷鸟效应”引领全民AR新纪元:专注影音体验,打造消费级AR天花板
  • 理想传输线等效模型与特性阻抗
  • 实现RPC接口的demo记录