IO,进程创建、线程的创建、线程间通信、进程间通信
文件类型:
普通文件: -
目录文件: d
块设备文件: b (存储块)
字符设备文件: c (鼠标、键盘、显示器、摄像头、串口)
链接文件: l (快捷方式)
管道文件: p (进程间通信,有名管道 通信的文件)
BSD套接字文件文件: s
系统调用
频繁调用效率低,由用户模式切换内核模式,耗时长,一个程序调用一个接口,多个程序要调用多个接口
是内核的一部分,用户直接访问内核提供的接口
提高系统的安全性,方便应用程序的移植,提升一定的编程效率
C库函数
为了实现某个功能的api封装集合
C库函数内部效率更高,内部有可能调用多个函数,带缓存由FILE*存储
是用户空间的一部分,在系统调用基础上进一步封装的接口
极大提高编程效率
便于应用程序的移植
标准IO
标准的输入输出:input/output:对文件的输入输出
标准IO由 ANSI C库为标准:是在系统调用基础上进一步封装的库
方便用户操作标准IO
文件指针:
FILE*类型的指针,指向 内存中 存储操作文件信息的结构体
FILE*也被称为 流指针。
所有标准IO都围绕stream流进程
流:简单的从程序中 移进移出的字节流stream,分为文本流和二进制流
文本流:在传输的过程中以字符形式存在
2001--------50 48 48 49
二进制流:流中处理的是二进制序列
2001--------00000111 11010001
文件缓冲:
先将文件缓冲存储到缓冲区,装满缓冲区之后 再一齐调用write和read存到(disk)磁盘中
标准IO之缓存类型(高级磁盘IO)
1.全缓存:当使用fflush或者缓冲区满的时候,才进行刷新缓存。
2.行缓存:当遇见‘\n’或者fflush或者缓冲区满的时候,才进行刷新缓存
3.不带缓存:stderr
缓存操作接口函数:
-
void setbuf(FILE* stream,char *buf);
功能:
设置stream流的缓存空间为buf这个地址空间
当buf为NULL,表示关闭缓存
参数:
stream:某个文件流地址
buf :用户空间首地址(数组空间首地址)
返回:
无
打开标准IO流:
1.函数原型
FILE *fopen(const char *path,const char *mode);
功能:
打开或者创建打开一个文件,得到文件流指针。
参数:
path:待操作的文件名(包含路径)
mode:文件的操作方式(r r+ w w+ a a+)
返回值:
成功:文件流指针
失败:NULL,并设置错误信息
作业
计算行缓存和全缓存的大小文章来源:https://www.toymoban.com/news/detail-438562.html
path:待操作的文件名(包含路径)
mode:文件的操作方式(r r+ w w+ a a+)
返回值:
成功:文件流指针
失败:NULL,并设置错误信息
作业
计算行缓存和全缓存的大小
编写程序计算文件的大小和文件的行数文章来源地址https://www.toymoban.com/news/detail-438562.html
到了这里,关于IO 缓存与函数 5.9的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!