【Linux】基础IO_1

简介: 【Linux】基础IO_1

六、基础IO

1. C语言的文件接口

我们知道 文件 = 文件内容 + 文件属性 。即使是一个空文件,仍然会在磁盘中占据空间。那打开文件是什么意思呢?其实文件打开的意思就是:将文件从磁盘中加载到内存中。 文件跟程序一样,被操作系统使用内核数据结构给管理起来了,对文件的操作就转变为对文件的调度。

我们接下来熟悉和使用C语言中的文件接口。

参数:

“r”:只读方式打开文件,文件必须存在。

“w”:写入方式打开文件,如果文件存在,则清空文件内容;如果文件不存在,则创建新文件。

“a”:追加方式打开文件,如果文件存在,写入数据时定位到文件末尾;如果文件不存在,则创建新文件。

“rb”:以二进制只读方式打开文件。

“wb”:以二进制写入方式打开文件。

“ab”:以二进制追加方式打开文件。

不知道大家还记得Linux中的重定向符不,>输出重定向,<输入重定向,>>追加重定向。

重定向符和文件流非常相似,他俩肯定有莫大的关系。既然知道了写操作,我们接下来看看文件读取操作。

2. 系统文件I/O

我们从键盘接收输入,打印到显示器上,但键盘和显示器都是硬件资源,他们统统被操作系统所管理,我们的文件(进程)无法绕过操作系统打开这些资源,所以操作系统必须要提供一些接口来支持文件访问。

我们来用一用:

接下来看看怎么写和怎么关闭:

open系统调用接口传递标志位(本质是宏)时,还有其他的标志位。

我们系统调用接口中都需要 fd 这个参数,这个参数是文件标识符,确定文件的参数。在操作系统内部,进程PCB中存储着一个结构体指针,指向一个文件描述符表,这个表是一个结构体指针数组,内部存的是文件结构体指针,分别指向不同的打开的文件。而这个 fd 就是这个文件表结构体的下标,确定文件。

一般来说,fd = 0 是标准输入文件流(键盘文件),1 是标准输出文件流(显示器文件), 2 是标准错误文件流(显示器文件)。

fd的分配规则:最小的没有被使用的数组下标,会被分配给最新打开的文件。 所以我们可以:close(1),即关闭stdout流,然后新打开的文件的fd就是1,但是输出函数并不知道,向显示器打印的字符串统统转变成向文件内写入。就实现了重定向的功能。

这里 dup2 函数可以方便实现重定向的功能。


未完待续

目录
相关文章
|
1月前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
148 10
|
1月前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
58 0
|
1月前
|
Unix Linux Shell
【探索Linux】P.12(文件描述符 | 重定向 | 基础IO)
【探索Linux】P.12(文件描述符 | 重定向 | 基础IO)
22 0
|
3天前
|
Linux 编译器 C语言
【Linux】基础IO_4
【Linux】基础IO_4
7 3
|
9天前
|
Linux C++
c++高级篇(三) ——Linux下IO多路复用之poll模型
c++高级篇(三) ——Linux下IO多路复用之poll模型
|
9天前
|
缓存 监控 网络协议
c++高级篇(二) ——Linux下IO多路复用之select模型
c++高级篇(二) ——Linux下IO多路复用之select模型
|
9天前
|
Linux
Linux异步io机制 io_uring
Linux异步io机制 io_uring
13 1
|
21天前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
21 1
|
2天前
|
Linux 网络安全 开发工具
【linux】基础IO |文件操作符
【linux】基础IO |文件操作符
10 0
|
3天前
|
Linux Windows
【Linux】基础IO_3
【Linux】基础IO_3
5 0