【「嵌入式」- Linux文件下I/O精讲】 https://www.bilibili.com/video/BV1dz411B7vj/?share_source=copy_web&vd_source=92aa874d5e931eaa0fccbbc36aa0e872
一组有关数据的集合
常规 r (包括二进制) 目录文件 d 字符设备 c 块设备 b 管道文件 p 套接字文件 s 符号连接文件 l (link) ==操作系统不同,支持的文件类型也不同==
c库中定义好的用于输入输出的函数 主流操作系统都实现了c库
标准io通过缓冲机制实现系统调用,提高效率
可以代码直接操作硬件eg单片机开发
而现在计算机所有对硬件的操作,用操作系统保护起来.应用程序是不可以直接对硬件进行操作的 操作系统是多任务的,如果没有操作系统,那可能任何一个恶意软件都会破坏
应用程序操作硬件,通过操作系统提供的==系统调用==接口. 不同系统,接口不同 系统调用是有开销的
要读取的时候, 应用程序在读取文件的时候,可以开辟一个缓冲区,让os对接disk,读取一堆放到缓冲区里 之后要用的时候优先从缓冲区里拿(写的时候也优先从缓冲区里写),这样就可以减少系统调用的次数 标准io会自动开辟缓冲区
FILE 标准io用一个结构体类型来存放打开的文件信息 标准io所有操作都是围绕FILE来进行的
换行符: winodws.二进制流 \n 文本流 (换行符对应两个字符)\r \n linux 都是\n
- 全缓冲(标准io打开文件默认的) 当流的缓冲区无空间/数据时才执行io操作
- 行缓冲(标准输入输出默认),遇到换行符/缓冲区满了的时候,进行io操作
- 所以说打印的时候要加换行符,从缓冲区出来(标准输入出与终端相关联)
- 无缓冲,数据直接写入文件(一般是显示error)
- ![[Pasted image 20241212173144.png]] fopen