printf写入标出输出的缓冲区刷新条件

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:26   908   0

printf缓冲区刷新条件:

1 缓冲区填满

2 写入的字符中有‘\n’ '\r'

3 调用fflush(stdout)手动刷新缓冲区

4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新


printf为例,在printf的实现中,在调用write之前加入了IO缓冲区,这是一个用户空间的缓冲,首先要说明一点,系统调用是软中断,频繁调用,需要内核频繁陷入内核态,这样的效率不是很高,而printf实际是向用户空间的IO缓冲写,在满足条件的情况下才会调用write系统调用,这样也就提高了内核的效率。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP