深耕 IC 现货市场 多年,我们是您值得信赖的伙伴。
我们提供 无最低订购量 的灵活选择,最快可实现 当天发货。欢迎联系我们获取 IC 报价!
[Linux系统编程] IO标准缓冲区

[Linux系统编程] IO标准缓冲区

1.缓冲区概述标准I / O提供三种类型的缓冲区:1.完整缓冲区:实际的I / O操作在填充标准I / O缓冲区之后执行。常规文件(例如普通文本文件)通常被完全缓冲。
2.行缓冲:在输入和输出中遇到换行符时,标准I / O库将执行I / O操作。这使我们一次只能输出一个字符,但只能在执行实际I / O操作之前写一行之后。
当标准输入和标准输出与终端设备(例如屏幕)相对应时,它们通常是行缓冲的。 3.不带缓冲:每次用户程序编写一个库函数时,都必须通过系统调用(例如系统调用函数)将其写回到内核。
标准错误输出通常没有缓冲,因此用户程序生成的错误消息可以尽快输出到设备。 2.完整的缓冲区测试代码:int main(int argc,char * argv []){FILE * fp = NULL; //打开以进行读取和写入,如果文件不存在则创建文件fp = fopen(“ test。
txt”,“ w +”); if(NULL == fp){printf(”打开错误 ");返回1;} char * str =“ C ++程序员 " fwrite(str,1,strlen(str),fp); //将内容写入文件while(1); //程序在这里被阻止,返回0;}运行程序,并发现test.txt具有无内容。由于正常,文件通常被完全缓冲。
仅当缓冲区已满时,内容才会写入文件。接下来,让我们修改以上示例。
测试代码:#include& lt; stdio.h& gt; #include& lt; string。 h& gt; int main(int argc,char * argv []){FILE * fp = NULL; //打开以进行读写,如果文件不存在则创建文件fp = fopen(“ test.txt”,“ w + ”);如果(NULL == fp){printf(“打开错误 ");返回1;} char * str =" test " int i = 0; while(i& == 512){//缓冲区的大小不确定,i的大小只是调试值fwrite(str,1,strlen(str),fp ); //写文件内容i ++;} while(1); //程序在这里被阻塞,返回0;}上面的示例是将内容循环写到文件中,以便可以填充缓冲区,并且事实证明该文件包含内容。
实际上,如果您想成功地将内容写入文件,除了填充缓冲区外,还有其他方法。 2.1如果您手动关闭文件,即使缓冲区未满,内容也会写入文件#include& lt; stdio.h& gt; #include& lt;中。
string.h& gt; int main(int argc,char * argv []){FILE * fp = NULL; //打开以进行读写,如果文件不存在则创建文件fp = fopen(“ test.txt”,“ w + ”); if(NULL == fp){printf(“打开错误 ");返回1;} char * str ="测试正常 " fwrite(str,1,strlen(str),fp); //将内容写入文件fclose(fp); //人工关闭文件,即使缓冲区未满,内容也会被写入文件while(1); //程序在这里被阻塞,返回0;} 2.2程序正常结束,即使未填充缓冲区且文件未关闭,内容也会写入文件中。 #include& lt; stdio.h& gt; #include& lt; string.h& gt; int main(int argc,char * argv []){FILE * fp = NULL; //打开以进行读写。
如果文件不存在,则创建fp = fopen(“ test.txt”,“ w +”); if(NULL = = fp){printf(“打开错误 ");返回1;} char * str ="测试正常 " fwrite(str,1,strlen(str),fp); //向文件写入内容返回0; //即使缓冲区未填充且文件未关闭,程序也会正常结束}。3.行缓冲区#include& lt; stdio.h& gt; int main(int argc,char * argv []){printf(“ hello test”); while(1); return 0;}运行此程序,您会发现hello test它没有打印在屏幕上。
因为标准输入和标准输出通常在与终端设备相对应时是行缓冲的,所以当输入和输出中遇到换行符时,标准I / O库将执行I / O操作。如下:#include< stdio.h> int main(int argc,char * argv []){printf(“ hello test " while(1); return 0;}除了遇到换行符,还有其他执行I / O操作的方法。
3.1缓冲区已满int main(int argc,char * argv []){while(1){//循环打印,缓冲区总是充满了printf(“ hello sunplusedu”);} while(1); return 0;} 3.2人工刷新缓冲区#include< stdio.h& gt; int main(int argc,char * argv []){printf(“ hello test”); fflush(stdout); //人工刷新while(1);返回0;} 3.3程序正常结束#include& lt ; stdio.h& gt; int main(int argc,char * argv []){printf(“ hello sunplusedu”);返回0; //程序正常结束} 4.没有缓冲区#include& lt; unistd.h& #include
NEW
  • 压敏电阻的工作原理及应用领域

    压敏电阻是一种对电压敏感的电子元件,主要作用是保护电路免受过电压的影响。当电路中的电压超过其阈值时,压敏电阻的电阻会急剧下降,从而允许...

  • 负温度系数热敏电阻工作原理及应用

    负温度系数热敏电阻(NTC)是一种电子元件,其电阻值会随着温度的升高而降低。这种特性使得NTC热敏电阻在众多领域中有着广泛的应用,如温度测量、...

  • 温度传感器工作原理及应用领域

    温度传感器是现代工业与日常生活中不可或缺的一部分,它们广泛应用于各种设备和系统中,用于测量和监控温度变化。了解温度传感器的工作原理及其...

  • 积层压敏电阻的应用与特性详解

    积层压敏电阻(Multilayer Varistor,MLV)是一种小型化、高性能的压敏电阻,广泛应用于电子设备中以保护电路免受过电压的损害。这类元件具有体积小、响...

  • 静电保护器的作用与安装方法

    静电保护器在电子设备和敏感组件的保护中扮演着重要角色,尤其是在高湿度或干燥环境中,静电可能会对电子元件造成损害。静电保护器可以有效地防...

  • 电子浆料的应用与发展趋势

    在现代科技快速发展的背景下,电子浆料作为一种关键材料,在微电子、光电子、太阳能电池等领域发挥着不可替代的作用。电子浆料是一种具有导电性...

  • JVR标准系列详解:功能、应用与优势全面解析

    在现代工业自动化领域,JVR标准系列因其卓越的功能性和广泛的适用性而备受关注。本文将从多个角度对JVR标准系列进行全面解析,帮助您更好地理解其...

  • JVR高浪涌系列的应用与优势详解

    在电力系统和电子设备中,浪涌保护器是保障设备安全运行的重要装置。JVR高浪涌系列作为一款高性能的浪涌保护器,在众多领域得到了广泛应用。它具...

  • JVR超高浪涌系列 产品特性与应用范围详解

    在现代电气系统中,浪涌保护器是确保设备安全运行的关键组件之一。JVR超高浪涌系列作为一款高性能的浪涌保护解决方案,其设计旨在为各种应用场景...

  • JVZ标准系列详解:功能、应用与优势全面解析

    在当今快速发展的工业自动化领域,JVZ标准系列因其卓越的功能和广泛的应用而备受关注。JVZ标准系列是针对特定行业需求设计的一系列设备或系统,旨...

  • JVZ高浪涌系列使用方法及优势全面解析

    在面对电力系统中的瞬时电压波动和浪涌问题时,选择合适的保护设备至关重要。JVZ高浪涌系列作为市场上的一款高性能产品,凭借其卓越的设计理念与...

  • JVZ超高浪涌系列 产品特点及应用领域

    在现代电力系统中,由于雷击、开关操作等引起的瞬态电压浪涌问题日益突出,对电力设备的安全稳定运行构成了严重威胁。JVZ超高浪涌系列作为专为解...

  • JVT标准系列详解:应用、特点及优势

    在当今的工业自动化领域,JVT标准系列因其卓越的性能和广泛的应用而备受关注。JVT标准系列涵盖了从控制系统到网络通信等多个方面,旨在为用户提供...

  • JVT高浪涌系列的应用与优势

    在现代电子设备中,电源和信号线面临着各种瞬态电压冲击的风险,这可能对设备造成严重的损害。JVT高浪涌系列作为专业的保护解决方案,在众多应用...

  • JVT超高浪涌系列详解:特点、应用与优势

    在当今电子技术快速发展的背景下,保护电子设备免受电压浪涌的影响变得尤为重要。JVT超高浪涌系列正是针对这一需求而设计的产品,旨在为各类敏感...

  • MOVS系列功能与应用详解

    在现代科技领域,MOVS系列因其卓越的功能和广泛的应用而备受关注。MOVS系列是一种高性能的系统或设备,具体应用可能涵盖工业自动化、信息技术、通...

  • JNR热敏电阻工作原理及应用领域

    热敏电阻是一种对温度变化非常敏感的电子元件,其中JNR热敏电阻(假设为特定类型或品牌)因其卓越性能在众多领域得到广泛应用。了解其工作原理和...

  • JCR03热敏电阻参数及应用详解

    JCR03热敏电阻是一种广泛应用在各种电子设备中的温度传感器,它能够根据周围环境的温度变化改变自身的电阻值。这种特性使得JCR03热敏电阻成为监测和...

  • JCR05热敏电阻参数及应用领域详解

    JCR05热敏电阻是一种广泛应用于各种电子设备中的温度传感器。它具有高灵敏度、稳定性和可靠性等优点,因此在许多领域都有着重要的应用。接下来,...

  • JSR热敏电阻的工作原理和应用领域

    JSR热敏电阻,即Junction Signal Regulation(结点信号调节)热敏电阻,但更有可能您指的是NTC热敏电阻(Negative Temperature Coefficient Thermistor,负温度系数热敏电...