当前位置: 首页 > 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.lryc.cn/news/471431.html

相关文章:

  • 5G 基站SCTP
  • MFC的SendMessage与PostMessage的区别
  • 学习虚幻C++开发日志——基础案例(持续更新中)
  • 【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引
  • VSCode Qt6安装OpenSSL
  • JAVA学习-练习试用Java实现“定义一个用户类,包含用户名和密码”
  • 大数据之VIP(Virtual IP,虚拟IP)负载均衡
  • 鸿蒙网络编程系列38-Web组件文件下载示例
  • Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置
  • Flink系列之:学习理解通过状态快照实现容错
  • Linux 读者写者模型
  • JavaScript 的 axios 实现文件下载功能
  • 合合信息亮相2024中国模式识别与计算机视觉大会,用AI构建图像内容安全防线
  • 深度学习:匿名函数lambda函数的使用与numerical_gradient函数
  • PHP数据类型
  • 2FA-双因素认证
  • 解决 Python 中的 TypeError 错误
  • 快速学会C 语言基本概念和语法结构
  • Python酷库之旅-第三方库Pandas(172)
  • Linux系统下minio设置SSL证书进行HTTPS远程连接访问
  • npm 包的命名空间介绍,以及@typescript-eslint/typescript-eslint
  • ecovadis评估是什么,有什么提成自己评分等级
  • Vue3中ref、toRef和toRefs之间有什么区别?
  • react开发技巧
  • HarmonyOS第一课——HarmonyOS介绍
  • XCode16中c++头文件找不到解决办法
  • CSS - 保姆级面试基础扫盲版本一
  • 51c自动驾驶~合集2
  • Redis后台任务有哪些
  • TPair<TKey, TValue> 键值对