printf函数缓冲区问题

printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:

1.缓冲区填满
2.写入的字符中有‘\n’ '\r'
3.调用fflush手动刷新缓冲区
4.调用scanf等要从缓冲区中读取数据时,也会将缓冲区内的数据刷新

在多线程程序中尤其值得注意,fork时,缓冲区也被fork,要是之前缓冲区没有被刷新过的话,缓冲区中的内容依然存在,在子进程中再次调用printf就会出现自己不想要的输出。

相关链接:

  • http://blog.csdn.net/skyflying2012/article/details/10044035
  • http://blog.csdn.net/shanshanpt/article/details/7385649

你可能感兴趣的:(printf函数缓冲区问题)