I/O操作的对象就是文件
文件概念:一组相关数据的有序集合
文件类型:常规文件 r(编译好的程序、txt等);目录文件 d;字符设备文件 c ;块设备文件 b;管道文件 p(进程间通信);套接字文件 s (进程间通信);符号链接文件 l (link;快捷方式)
标准I/O :ANSI c标准定义;内部存有缓冲机制减少系统调用
举例:
无缓冲区: 每次读取都需要调用 系统驱动区读写 磁盘(开销很大)
APP(发出请求读取10个字节的数据)-------------------系统(驱动调用)---------disk(磁盘数据读写)
有缓冲区: 每次读取会 先从缓冲区那里获取字节数;如果(无)才会调用系统驱动(减少了对磁盘重复读取的开销)
APP(读取10个字节的数据)-----------系统(开辟一个 eg:2k的空间)-------------驱动调用-------------磁盘读取
程序的运行方法有两种:
无OS(操作系统) 代码-------》硬件;代码裸接硬件(容易造成系统瘫痪)
有OS app(n)--》os-----》硬件;操作系统是多任务的,通过系统给的api 访问硬件(安全并保护了硬件)
不同系统 ,调用接口不一致
标准I/O ----流
FILE :标准io用一个结构体类型
windows
文本流:换行符 ='\r''\n' 二进制流:换行符 = '\n'
linux
换行符都为 '\n',都是二进制流
标准I/O- 流的缓冲类型
全缓冲
当流的缓冲区无数据或无空间时执行实际的I/O操作;eg:读取文件
行缓冲
当在输入和输出中遇到换行符('\n')时,进行I/O操作。(eg:cout<<x<<endl)
无缓冲
eg:打印错误信息