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

Linux 文件相关知识

以下是将你提供的文本转换为 Markdown 格式的内容:

Linux 文件相关知识

  • Linux 中一切皆文件。
  • linux 文件系统的头文件:
    • /usr/src/linux-headers-4.15.0-142-generic/include/linux/fs.h
  • struct file这个结构体是在文件被操作时会创建的。
  • struct file_operations这个结构体中的成员几乎都是函数指针,用于做统一化管理。

标准文件 IO

  • C 标准库。
  • 具有良好的移植特性。
  • 通常在用户态下使用。
  • 高级函数,用于应用层。
  • 执行效率高。
  • 文件操作在用户态和内核态下交互次数少。
  • 能够使用标准 IO 的情况下就不要使用系统 IO。

系统文件 IO

  • 在内核中。
  • 不可移植。
  • 通常在内核态下使用。
  • 低级函数,用于内核层。
  • 执行效率相对较低。
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

open函数

  • 功能:打开文件。

  • 参数 1:待打开文件的文件名及其路径。

  • 参数 2

    :打开文件的方式。

    • O_RDONLY:只读。
    • O_WRONLY:只写。
    • O_RDWR:读写。
    • O_APPEND:追加。
    • O_CREAT:如果文件不存在则创建,存则直接打开。
    • O_TRUNC:如果文件存在则清空。
  • 参数 3

    :只有在文件被创建时才会生效,用于设置被创建的文件的权限。

    • 如果文件被创建时,没有设置这个参数,则文件访问权限随机。
    • 如果文件已经存在,无法通过这个参数修改文件权限。
    • 一般使用0644或者0777
  • 返回值:成功返回文件描述符,失败返回-1errno被自动设置。

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

read函数

  • 功能:从文件中读取数据。
  • 参数 1:待读取文件的文件描述符。
  • 参数 2:存储读取的数据。
  • 参数 3:将要读取的字节数。
  • 返回值:成功读取的字节数,失败返回-1errno被自动设置。
ssize_t read(int fd, void *buf, size_t count);

write函数

  • 功能:向文件中写入数据。
  • 参数 1:待写入文件的文件描述符。
  • 参数 2:待写入的数据。
  • 参数 3:将要写入的字节数。
  • 返回值:成功写入的字节数,失败返回-1errno被自动设置。
ssize_t write(int fd, const void *buf, size_t count);

close函数

  • 功能:关闭文件。
  • 参数 1:待关闭文件的文件描述符。
  • 返回值:成功返回0,失败返回-1errno被自动设置。
int close(int fd);

如何将 Markdown 格式转换为 TXT 格式?

推荐一些好用的 Markdown 编辑器

除了 Linux,Markdown 还可以在哪些系统上使用?


http://www.kler.cn/a/300296.html

相关文章:

  • Java自定义多队列线程池
  • vif-方差膨胀因子计算
  • 【二叉树的深搜】计算布尔二叉树的值 求根节点到叶节点数字之和
  • Elasticsearch(ES)基础查询语法的使用
  • 图的基本概念
  • Java-数据结构-二叉树习题(2)
  • Qt 布局管理 控件设置
  • 【北京迅为】《STM32MP157开发板使用手册》- 第二十章 Trusted Firmware-A 移植+第二十一章 U-Boot移植
  • 通信工程学习:什么是CSCF会话控制功能、P-CSCF代理会话控制功能、I-CSCF询问会话控制功能、S-CSCF服务会话控制功能
  • Prometheus与Grafana在DevOps中的应用与最佳实践
  • 828华为云征文 | Flexus X的力量,驱动Halo博客在云端飞驰
  • 使用程序方式获取与处理MySQL表数据
  • Uniapp + Vue3 + Vite +Uview + Pinia 实现购物车功能(最新附源码保姆级)
  • Self Refine技术测评:利用Self Refine提高LLM的生成质量
  • 手机如何执行Python
  • 比较stl库的ostringstream与Qt的QString::arg(),QString::number()
  • Transformer理论阶段
  • Unet改进31:添加Star_Block(2024最新改进方法)|紧凑的网络结构和高效的运算
  • 全国各地身份证号开头6位数字及地区对照表
  • 代码随想录Day39|322. 零钱兑换、279.完全平方数、139.单词拆分
  • Kubectl:Kubernetes 的强大命令行工具
  • C++的智能指针
  • 通过ASCII码打印HelloWorld(花式打印HelloWorld)
  • 应用宝自动下载安装
  • 如何下载和安装 Notepad++
  • 【数据库】MySQL表的Updata(更新)和Delete(删除)操作