首页 > 其他分享 >标准io和文件io

标准io和文件io

时间:2023-02-13 20:56:51浏览次数:33  
标签:文件 冲洗 标准 缓存 io 缓冲区 数据

 

 

 

一个进程中默认打开了STDIN(标准输入)、STDOUT(标准输入)、STDERR(标准错误)

标准io:标准io库(stdio)提供的带缓存的io,可提高效率(减少系统点用),也会有系统调用,只是在缓存达到某种条件是,才会执行系统点用

带缓存的实质:是将要输入或者输出的数据,先放到缓存中,然后在适当的时候,将数据输出/输入

如下图:从键盘上输入“iotek”,会先将数据存放到缓冲区中。

每当使用标准IO的写操作函数,试图将数据写入文件 a.txt 时,数据都会流过缓冲区(一般大小为1024字节),然后再在适当的时刻冲洗(或称刷新,flush)到内核,最后才真正写入设备文件。

 

 

 

缓冲区按照什么时候冲洗数据到内核,可以将缓冲区分成以下三类:

  • 不缓冲类型:

    • 一旦有数据,立刻将数据冲洗到文件(立即在存储器中更新文件)

  • 全缓冲类型:

    • 一旦填满缓冲区,立刻将数据冲洗到文件

    • 程序正常退出时,立刻将数据冲洗到文件

    • 遇到 fflush() 强制冲洗时,立刻将数据冲洗到文件

    • 关闭文件时,立刻将数据冲洗到文件

    • 读取文件内容时,立刻将数据冲洗到文件

    • 改变缓冲区类型时,立刻将数据冲洗到文件

  • 行缓冲类型:

    • 同全缓冲类型

    • 一旦遇到’\n’时,立刻将数据冲洗到文件

 

标签:文件,冲洗,标准,缓存,io,缓冲区,数据
From: https://www.cnblogs.com/zj-studyrecoding/p/17117755.html

相关文章

  • GDB 调试 - 正确地加载调试符号文件
    一、开发流程1.编译可执行文件1#include<stdio.h>2#include<unistd.h>34voidtest()5{6char*s="helloworld\n";7while......
  • 001.SpringIoc初体验
    1.创建entity(Apple、Child)packagecom.imooc.spring.ioc.entity;publicclassApple{privateStringtitle;privateStringcolor;privateStringori......
  • Web标准
    Web标准的构成主要包括结构(Structure)、表现(Presentation)和行为(Behavior)三个方面。结构:对网页元素进行整理和分类,现阶段主要学的是HTML。表现:用于设置网页元素的版式......
  • 7.7 BIOS和引导
    程序的运行环境中,存在着名为BIOS(BasicInput/OutputSystem)的系统。BIOS存储在ROM中,是预先内置在计算机主机内部的程序。BIOS除了键盘、磁盘、显卡等基本控制程序外,还有启......
  • DP8.0安装步骤session
    [root@rx6600]#./omnisetup.sh-CM-ISTheomnisetup.shscriptdidnotcompletethelasttimeitwasrun.CellManagerstillhastobeinstalledInstallation......
  • hpux文件系统扩容
    [root@rx6600]#lvextend-L10240M/dev/vg00/lvol6Logicalvolume"/dev/vg00/lvol6"hasbeensuccessfullyextended.VolumeGroupconfigurationfor/dev/vg00hasb......
  • runtime/cgo: pthread_create failed: Operation not permitted
    runtime/cgo:pthread_createfailed:Operationnotpermitted在容器里边运行命令报错解决方案(增加--privileged)dockerrun--privileged参考文档https://stacko......
  • Goland在公司电脑上clone GitLab项目之后commit报错:Error updating changes: detected
    原因是因为公司电脑上的gitconfig的邮箱与你公司给你的域邮箱不同,可以通过gitconfig--list去查看你的gitconfig相关信息ps.输入命令后按空格查看更多,按Q退出然后......
  • 赎金信(力扣标准哈希表计数题)
    题目:给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ra......
  • linux文件拼接命令 paste
    paste[文件名1[文件名2]……][选项]-s把文件以行的方式拼接-d制定分隔符,默认以制表符分隔[root@localhost~]#seq5>1.txt[root@localhost~]#seq610>2.t......