文件I/O(不带缓存)++标准I/O(带缓存)
来源:互联网 发布:循序渐进学java 编辑:程序博客网 时间:2024/06/07 07:17
概念:
不带缓冲I/O:指每个read和write都调用内核中的一个系统调用。也指在用户区没有缓存,在内核还是有缓存。在进行写操作时,将数据先复制到内核的缓冲区,然后排入对鞋。最后再写到磁盘。比如:要写20个字节,将要调用20次的write。
产生的问题:一次写多,多次调用系统调用,效率低下。
带缓冲I/O:指在系统调用上多加了一个缓冲区,来减少系统调用。
建立一个缓存区,通常用malloc来分配缓存,还创建一个包含文件和缓存区相关联的数据结构(FILE*),这些系统都为你做了,不需要你考虑。比如:要写20个字节,先把数据写到用户缓冲区,然后根据什么缓冲类型,在把数据写到内核缓冲区中。(读写模式有两个缓冲区)
1、文件I/0需用的函数:open、read、write、lseek、close。
操作的对象是文件描述符。
int open(const char* path,int oflag);
int open(const char* path,int oflag,mode_t mode); //返回文件描述符,失败-1.
ssize_t read(int fd,void* buf,size_t nbytes);
//返回读到的字节数,若到文件结尾,则为0,失败-1.
ssize_t write(int fd,void* buf,size_t nbytes); //返回以写的字节数,失败-1.
显示的为文件设置偏移量,off_t lseek(int fd,off_t offset,int whence);
//返回新的文件偏移量,失败-1.
2、标准I/0需用的函数:fopen、fread、fwrite、fgetc、fgets........
操作的对象时数据流。
标准I/O提供缓冲的目的是为了减少read、write的调用次数。
缓冲的类型:
1.全缓冲:当标准I/O缓冲区填满后才进行实际的I/O操作。
2.行缓冲:当在输入和输出时遇到换行符,就进行I/O操作。
3.不带缓冲:相当于read、write。stderr通常是不带缓存,就使得错误信息尽快显示。
- 文件I/O(不带缓存)++标准I/O(带缓存)
- 不带缓存的I/O和带缓存的标准I/O
- 不带缓存的I/O和标准(带缓存的)I/O
- 不带缓存的I/O和标准(带缓存的)I/O(经典)
- 不带缓存的I/O和标准(带缓存的)I/O
- 不带缓存的I/O和标准(带缓存的)I/O
- 不带缓存的I/O和标准(带缓存的)I/O
- 不带缓存的I/O和标准(带缓存的)I/O(经典)
- 不带缓存的I/O和标准(带缓存的)I/O
- 不带缓存的I/O和标准(带缓存的)I/O
- 不带缓存的I/O和标准(带缓存的)I/O
- c/c++复习日记 1.不带缓存的I/O和标准I/O
- 不带缓存的文件I/O操作 open/close
- 不带缓存的文件I/O操作 read/write
- 不带缓存的文件I/O操作 fcntl
- 不带缓存的文件I/O操作
- 带缓存的I/O和不带缓存的I/O的区别
- 带缓存I/O和不带缓存I/O概念
- 【Docker加速】- 解决docker pull镜像速度慢的问题
- Mysql语句练习
- CentOS安装流程
- C/C++面试题(一)
- 数据结构 C语言 队列 迷宫问题
- 文件I/O(不带缓存)++标准I/O(带缓存)
- java线程池 -- 大话笔记
- 从Adobe调查问卷看原型设计工具大战
- android QMI机制---modem消息发送
- ZOJ3876 May Day Holiday【日期计算】
- win10 物联网编程资料
- unity3D学习笔记之七 RectTransform与屏幕适配
- 剑指offer | 训练题49:数组中重复的数字
- 数学建模--整数规划