Linux基础IO(二):系统文件IO怎么做?

2026-05-22 10:124阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐

翻旧账。 说到Linux下的文件操作, 大家可能都比较熟悉C语言的文件操作接口,如fopenfreadfwrite等,但你有没有想过这些接口底层是如何实现的?它们与Linux系统的文件IO有什么关系?今天我们就来探讨一下Linux基础IO:系统文件IO怎么做?

一、 IO操作的层级调用关系

换句话说... 简单C/C++程序会调用系统调用,然后系统调用再调用操作系统,接着操作系统调用硬件驱动,再说说硬件驱动操作硬件。这个过程就像一个层层嵌套的函数调用。

基础IO(二):系统文件IO

C语言文件操作简单回顾

C语言的相关文件接口汇总如下表:

接口 功能
fopen 打开文件
fread 读取文件内容
fwrite 写入文件内容
fclose 关闭文件

默认打开的三个流是stdin、 stdout和stderr,这些都是FILE类型的指针。

系统文件I/O

open: 打开文件的关键

open函数的个参数是权限。

2.2 第二个参数:打开方式的奥秘

第二个参数是通过宏定义和位运算来实现的, 比如是把整数当成32个开关的面板。

核心原理:把整数当成 32 个开关的面板.

2.2.1 第一步:定义开关

比方说 O_RDONLY、O_WRONLY、O_RDWR等宏定义就是通过左移运算符来定义的。

2.2.2 第二步:按下开关

在调用open函数时 我们可以通过按位或运算符来组合多个开关,比如O_RDWR | O_CREAT.,完善一下。

阅读全文

翻旧账。 说到Linux下的文件操作, 大家可能都比较熟悉C语言的文件操作接口,如fopenfreadfwrite等,但你有没有想过这些接口底层是如何实现的?它们与Linux系统的文件IO有什么关系?今天我们就来探讨一下Linux基础IO:系统文件IO怎么做?

一、 IO操作的层级调用关系

换句话说... 简单C/C++程序会调用系统调用,然后系统调用再调用操作系统,接着操作系统调用硬件驱动,再说说硬件驱动操作硬件。这个过程就像一个层层嵌套的函数调用。

基础IO(二):系统文件IO

C语言文件操作简单回顾

C语言的相关文件接口汇总如下表:

接口 功能
fopen 打开文件
fread 读取文件内容
fwrite 写入文件内容
fclose 关闭文件

默认打开的三个流是stdin、 stdout和stderr,这些都是FILE类型的指针。

系统文件I/O

open: 打开文件的关键

open函数的个参数是权限。

2.2 第二个参数:打开方式的奥秘

第二个参数是通过宏定义和位运算来实现的, 比如是把整数当成32个开关的面板。

核心原理:把整数当成 32 个开关的面板.

2.2.1 第一步:定义开关

比方说 O_RDONLY、O_WRONLY、O_RDWR等宏定义就是通过左移运算符来定义的。

2.2.2 第二步:按下开关

在调用open函数时 我们可以通过按位或运算符来组合多个开关,比如O_RDWR | O_CREAT.,完善一下。

阅读全文