目录
标准I/O介绍
文件的概念和类型
标准I/O-流(可理解为数据)
流的缓冲类型
标准I/O——stdin,stdout,stderr
标准I/O介绍
在寄存器中的输入输出标准,在任何系统上可运行,是一系列的接口,所以被称为标准IO
linux下一切IO皆文件
文件打开及读取 ——输出O
文件保存及写入 ——输入I
文件的概念和类型
文件的概念:
一组相关数据的有序集合,写在磁盘上的数据,以文件的形式存在
在linux中一切输入输出皆为文件
linux下的文件类型
unix基础知识-系统调用和库函数
系统调用
printf是一个输出
它是如何调用的呢
操作系统帮我们驱动了显示器,由显卡驱动来做,内核提供了一个接口,给用户可以调用显卡的驱动,printf调用了内核中的接口显示输出
系统调用就是操作系统为我们提供了一个接口,一个可调用的函数
库函数
strlen、memcpy在C语言库中,也可以直接调用系统提供的接口
由于操作系统有很多,版本也有很多,直接用应用程序调用,可移植性不高,所以有C语言库函数,应用代码通过调用C语言库,C语言库翻译成当前操作系统下的调用命令调用系统提供的接口,所以在各种操作系统中都读可以使用,代码移植性高
只要C库定义好后,Linux也可以使用,,windows也可以使用,这便是标准IO概念的来源
标准I/O由ANSI C标准定义
主流操作系统上都实现了C库
标准I/O通过缓冲机制减少系统调用,实现更高的效率
标准I/O-流(可理解为数据)
流(FILE)的含义
FILE 文件
标准IO用一个结构体类型来存放打开的文件的相关信息
标准I/O的所有操作都是围绕FILE来进行
流(stream)
FILE又被称为流(stream)
文本流/二进制流
Windows
Linux
流的缓冲类型
磁盘计算速度慢,通过缓冲的机制,增加读写的销量,减少中间路程中的时间
全缓冲
当缓冲区写满时,给磁盘区域
当流的缓冲区无数据或无空间时才执行实际I/O操作
行缓冲
当行结束时,出现换行符时,刷新到磁盘中
当在输入和输出中遇到换行符(‘\n’)时,进行I/O操作
当流和一个终端关联时,典型的行缓冲
无缓冲
数据直接写入文件,流不进行缓冲
标准I/O——stdin,stdout,stderr
标准IO
流的缓冲类型
stdin / stdout / stderr
stdin/stdout 默认是行缓冲
stderr没有缓冲
写代码显示缓冲区大小
当程序结束时,会把缓冲区的内容全部输出