广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >有哪些缓冲类型
  • 491
分享到

有哪些缓冲类型

2024-04-02 19:04:59 491人浏览 独家记忆
摘要

这篇文章主要介绍“有哪些缓冲类型”,在日常操作中,相信很多人在有哪些缓冲类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些缓冲类型”的疑惑有所帮助!接下来,请跟着小编一

这篇文章主要介绍“有哪些缓冲类型”,在日常操作中,相信很多人在有哪些缓冲类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些缓冲类型”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

缓冲

为了减少使用read和write调用的次数,标准io库提供了缓冲,有人可能会问,为什么要减少它们的调用次数?很明显read和write是系统调用,它们花费的时间将会更多,本文不展开描述。那么有哪三种缓冲类型呢?

全缓冲

在全缓冲的情况下,在填满标准I/O缓冲区后,才进行实际的I/O操作。写磁盘文件通常就是全缓冲的。举个例子:

#include<stdio.h> #include<unistd.h> int main(void) {          FILE *fp = fopen("./test.txt","w+");     if(NULL == fp)     {         perror("open file failed");         return -1;     }          char buf[] = "wechat:shouwangxiansheng\n";     fwrite(buf,sizeof(char),sizeof(buf),fp);     //fflush(fp);          sleep(20);     fclose(fp);     return 0; }

打开一个文件,并向里面写入一段字符串。我们编译并运行:

GCc -o buff buff.c $ cat test.txt wechat:shouwangxiansheng $ ./buff

此时观察test.txt:

$ cat test.txt

发现它的内容是空!明明已经写入了为什么会什么东西都没有?原因在于它默认是全缓冲的,因此在将内容写入文件后,并没有直接存在文件中,当程序关闭文件或者程序运行完成退出后,再次查看:

发现文件已经有了内容。除了等待程序运行完成,还可以使用fflush函数,它可以将缓冲区中的内容写入到磁盘中(终端驱动设备表示丢弃缓冲区的数据)。所以将fwrite下面一行的注释去掉后,就可以发现,写入之后,就可以直接在文件中看到内容了。所以当你在写一个文件,但是查看文件却没有任何写入内容时,不要一直怀疑自己的代码。

行缓冲

行缓冲指的是当遇到换行符时,或者缓冲区已经满了(一般1024字节),标准I/O库执行I/O操作。同样举个例子:

#include<stdio.h> #include<unistd.h> int main(void) {     printf("wechat:shouwangxiansheng");     sleep(10);     return 0; }

编译运行上面的程序:

$ gcc -o lineBuff lineBuff.c $ ./lineBuff

你会发现,printf执行完了之后,内容并没有马上输出到终端,而是在程序运行完之后才输出。聪明的你当然也知道,要想打印完后直接输出到终端,只需要改成下面这样就可以了:

printf("wechat:shouwangxiansheng\n");

不带缓冲

这个从字面就可以理解其意思了。同样举个例子:

noBuff.c*/ #include<stdio.h> #include<unistd.h> int main(void) {     fprintf(stderr,"wechat:shouwangxiansheng");     sleep(10);     return 0; }

编译运行你就会发现,运行完fprintf语句后,内容直接输出在终端,而不需要等到换行。一般来说,标准错误是不带缓冲的。

总结

通过上面的一些例子,我们也发现了这样一些规律:

  • 通常磁盘上的文件是全缓冲区的

  • 标准输入和标准输入通常是行缓冲的

  • 指向终端设备的流通常是行缓冲,而指向文件时,则是全缓冲

  • 为了尽可能显示错误信息,标准错误是不带缓冲的

到此,关于“有哪些缓冲类型”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 有哪些缓冲类型

本文链接: https://www.lsjlt.com/news/84329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 有哪些缓冲类型
    这篇文章主要介绍“有哪些缓冲类型”,在日常操作中,相信很多人在有哪些缓冲类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些缓冲类型”的疑惑有所帮助!接下来,请跟着小编一...
    99+
    2022-10-19
  • java中的缓冲流类型有哪些
    这期内容当中小编将会给大家带来有关java中的缓冲流类型有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和...
    99+
    2023-06-14
  • php缓存类型有哪些
    本篇内容介绍了“php缓存类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php缓存类型有5种:1、数据缓存,即数据库查询PHP缓存...
    99+
    2023-06-22
  • c++缓冲区溢出的原因有哪些
    C++缓冲区溢出的原因可以归纳为以下几点: 输入验证不足:当用户输入的数据长度超过了程序预留的缓冲区长度时,就会导致缓冲区溢出。...
    99+
    2023-10-23
    c++
  • LOB类型有哪些
    本篇内容主要讲解“LOB类型有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LOB类型有哪些”吧!LOB相关的概念 LOB类型: 将信息文件(十...
    99+
    2022-10-19
  • Hibernate中有哪些类型分类
    本篇文章给大家分享的是有关Hibernate中有哪些类型分类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 实体(Entities)和值(values)为了理解很多与持久化...
    99+
    2023-06-17
  • TypeScript的类型有哪些
    这篇文章主要介绍“TypeScript的类型有哪些”,在日常操作中,相信很多人在TypeScript的类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”TypeScri...
    99+
    2022-10-19
  • jquery库类型有哪些
    小编给大家分享一下jquery库类型有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! jquer...
    99+
    2022-10-19
  • javascript中有哪些类型
    这篇“javascript中有哪些类型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jav...
    99+
    2022-10-19
  • linux shell有哪些类型
    本篇内容主要讲解“linux shell有哪些类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux shell有哪些类型”吧! ...
    99+
    2023-03-01
    linux shell
  • RDD的类型有哪些
    这篇文章主要讲解了“RDD的类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RDD的类型有哪些”吧!一、RDD定义  RDD(Resilient Distributed Datase...
    99+
    2023-06-02
  • 域名有哪些类型
    本篇内容主要讲解“域名有哪些类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“域名有哪些类型”吧!以一个多见的域名为例说明,www.baidu.com网址是两部分别构成,标号“baidu”是这个...
    99+
    2023-06-06
  • linux的类型有哪些
    这篇文章主要介绍了linux的类型有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux的类型有哪些文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2023-02-28
    linux
  • 有哪些元件类型
    有哪些元件类型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。元件类型有:1、图形元件,可用于静态图像和创建连接到主时间轴的可重用动画片段;2、按钮元件,可以创建...
    99+
    2023-06-20
  • Linux文件类型有哪些分类
    今天就跟大家聊聊有关Linux文件类型有哪些分类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 普通文件[root@localhost ~]# ls -lh install.log...
    99+
    2023-06-17
  • VB.NET数据类型分类有哪些
    这篇文章给大家介绍VB.NET数据类型分类有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。VB.NET数据类型有:整型(Integer,表示-32768至32767之间的整数)、长整型(Long,表示-2,147,...
    99+
    2023-06-17
  • MySQL索引类型分类有哪些
    下面讲讲关于MySQL索引类型分类有哪些,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL索引类型分类有哪些这篇文章你一定会有所受益。 一、索引的分类1、唯一索...
    99+
    2022-10-18
  • javaScript引用类型与基本类型有哪些
    这篇文章主要讲解了“javaScript引用类型与基本类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javaScript引用类型与基本类型有哪些”吧!  1. 概念:  基本类型也...
    99+
    2023-06-04
  • gitee项目有哪些类型
    Gitee是一家国内知名的开源协作社区,它提供了丰富的项目类型以供开发者选择。下面就让我们来一起了解一下Gitee项目的类型。代码仓库如果您需要一个安全可靠的代码存储和版本管理工具,Gitee的代码仓库就是您最佳选择之一。代码仓库是Gite...
    99+
    2023-10-22
  • python错误类型有哪些
    python中的错误类型:1.语法错误,编写程序时代码不符合语言本身的规则和逻辑引发的错误;2.逻辑错误,编写程序时代码违反形式逻辑规律的要求和逻辑规则而产生的错误;python中的错误类型一般分为语法错误和逻辑错误两种语法错误python...
    99+
    2022-10-09
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作