Linux基础IO(二):系统文件IO怎么做?
- 内容介绍
- 文章标签
- 相关推荐
翻旧账。 说到Linux下的文件操作, 大家可能都比较熟悉C语言的文件操作接口,如fopenfreadfwrite等,但你有没有想过这些接口底层是如何实现的?它们与Linux系统的文件IO有什么关系?今天我们就来探讨一下Linux基础IO:系统文件IO怎么做?
一、 IO操作的层级调用关系
换句话说... 简单C/C++程序会调用系统调用,然后系统调用再调用操作系统,接着操作系统调用硬件驱动,再说说硬件驱动操作硬件。这个过程就像一个层层嵌套的函数调用。

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++程序会调用系统调用,然后系统调用再调用操作系统,接着操作系统调用硬件驱动,再说说硬件驱动操作硬件。这个过程就像一个层层嵌套的函数调用。

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.,完善一下。

