Skip to content

Latest commit

 

History

History
52 lines (44 loc) · 1.94 KB

文件io-1.md

File metadata and controls

52 lines (44 loc) · 1.94 KB

【「嵌入式」- Linux文件下I/O精讲】 https://www.bilibili.com/video/BV1dz411B7vj/?share_source=copy_web&vd_source=92aa874d5e931eaa0fccbbc36aa0e872

文件

一组有关数据的集合

文件类型:

常规 r (包括二进制) 目录文件 d 字符设备 c 块设备 b 管道文件 p 套接字文件 s 符号连接文件 l (link) ==操作系统不同,支持的文件类型也不同==

标准io

c库中定义好的用于输入输出的函数 主流操作系统都实现了c库

特点

标准io通过缓冲机制实现系统调用,提高效率

操作系统os

可以代码直接操作硬件eg单片机开发

而现在计算机所有对硬件的操作,用操作系统保护起来.应用程序是不可以直接对硬件进行操作的 操作系统是多任务的,如果没有操作系统,那可能任何一个恶意软件都会破坏

系统调用

应用程序操作硬件,通过操作系统提供的==系统调用==接口. 不同系统,接口不同 系统调用是有开销的

缓冲机制

要读取的时候, 应用程序在读取文件的时候,可以开辟一个缓冲区,让os对接disk,读取一堆放到缓冲区里 之后要用的时候优先从缓冲区里拿(写的时候也优先从缓冲区里写),这样就可以减少系统调用的次数 标准io会自动开辟缓冲区

FILE 标准io用一个结构体类型来存放打开的文件信息 标准io所有操作都是围绕FILE来进行的

分类

换行符: winodws.二进制流 \n 文本流 (换行符对应两个字符)\r \n linux 都是\n

流的缓冲类型

  • 全缓冲(标准io打开文件默认的) 当流的缓冲区无空间/数据时才执行io操作
  • 行缓冲(标准输入输出默认),遇到换行符/缓冲区满了的时候,进行io操作
    • 所以说打印的时候要加换行符,从缓冲区出来(标准输入出与终端相关联)
  • 无缓冲,数据直接写入文件(一般是显示error)
  • ![[Pasted image 20241212173144.png]] fopen