【博客197】Linux--IO缓冲区

内容: 记录linux的IO缓冲区种类

linux的IO缓冲区种类主要有三种:

1、全缓冲 :填满IO缓冲区后进行实际的IO操作(比如:对文件的写入)

2、行缓冲 :在标准输入输出IO函数中,遇到换行符则刷新到标准输入输出

3、无缓冲 :调用系统IO函数这一类属于无缓冲或者标准异常错误输出也是无缓冲
举例子:

一、全缓冲:
    FILE * fp = NULL;
	fp = fopen("test.txt", "w+");
	fwite(XX,XX,XX,fp);

注意:此时是全缓冲的,需要满足以下条件才会进行写入
	1、填满了文件IO缓冲区
	2、写完后关闭文件
	3、进程执行完后退出

二、行缓冲:
    1printf("hello world");    //此时linux不立即打印,等存到了行缓冲阈值再打印
    2printf("hello world\n");  //此时为行缓冲刷新,立即刷新
    3printf("hello world");
       fflush();                 //人为刷新,立即刷新
    4printf("hello world");
       return 0;                 //程序执行结束,立即刷新

三、无缓冲:
    1write(XX);                   //linux系统IO函数大部分无缓冲区
    2、fd = 2 的fd有内容需要输出      //fd = 2 的fd是异常输出流的默认fd
    (注意:frite,fread这些属于库函数,不属于系统调用,它们会在用户态维护一个缓冲区)

大四学生一枚,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。有喜欢C/C++,linux的同学欢迎私信一起讨论学习。

发布了214 篇原创文章 · 获赞 41 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/105335333
今日推荐