Linux系统编程21:基础IO之全缓冲和行缓冲的区别及深刻理解缓冲区及其作用

本文详细探讨了Linux系统编程中全缓冲和行缓冲的区别。全缓冲通常用于文件,数据在写满缓冲区后才刷新;行缓冲则在遇到换行符时刷新。通过示例解释了关闭文件如何影响缓冲方式。同时,文章指出write系统调用无缓冲,而printf等函数自带用户级缓冲区,进程退出或使用fflush会触发缓冲区刷新。
摘要由CSDN通过智能技术生成

[ 专栏目录首页:【专栏必读】王道考研408操作系统+Linux系统编程万字笔记、题目题型总结、注意事项、目录导航和思维导图

(1)全缓冲和行缓冲

一般来说,C库函数写入显示器属于行缓冲,也就是只要遇到一些标记,比如说’\n’就会立即刷新出去
所以上面的例子中如果不关闭1号文件,并且每个字符串后面都显式的加了\n,那么现象就是所有的内容都被打印了
在这里插入图片描述
在这里插入图片描述
C库函数写入文件时是全缓冲,也就是写满缓冲区才能刷新,如果发生重定向时(关闭1号文件)数据的缓冲方式就会由行缓冲变为全缓冲

所以下面的例子中,关闭1号文件,此时内容被重定向到了文件当中,printffprintf都没有输出任何东西
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江湖

创作不易,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值