内容: 记录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、进程执行完后退出
二、行缓冲:
1、printf("hello world"); //此时linux不立即打印,等存到了行缓冲阈值再打印
2、printf("hello world\n"); //此时为行缓冲刷新,立即刷新
3、printf("hello world");
fflush(); //人为刷新,立即刷新
4、printf("hello world");
return 0; //程序执行结束,立即刷新
三、无缓冲:
1、write(XX); //linux系统IO函数大部分无缓冲区
2、fd = 2 的fd有内容需要输出 //fd = 2 的fd是异常输出流的默认fd
(注意:frite,fread这些属于库函数,不属于系统调用,它们会在用户态维护一个缓冲区)
大四学生一枚,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。有喜欢C/C++,linux的同学欢迎私信一起讨论学习。