unix 标准输入输出缓存

原文:https://lizijie.github.io/
github:https://github.com/lizijie


四个月前碰到一个问题
为了提高程序IO效率,会对输出流进行缓冲管理,不会立即写到磁盘。但我在帖子里提到了两个疑问:
1. tail延时5-10秒,才读取到日志
2. 部分log并不是按逻辑顺序输出。比如

LOG("1");
LOGERR("2");
// 在日志文件里,2竟先打印
2
1

最近从《UNIX环境高级编程》第五章-标准IO/库读到了相关内容,认为可以解答以上2个疑问。
以下大部分内容摘自抄原文。

标准I/O提供了以下3种类型的缓冲:
1. 全缓冲。在这种情况下,填满标准I/O缓存后才进行实际I/O操作。对于驻留在磁盘上的文件通常是由标准I/O实施全缓冲的。
  缓存区可由标准I/O例程自动地冲洗(例如,当填满一个缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值