关于linux下面printf函数缓冲区问题

  linux下面每个进程会维护一个printf/scanf的缓冲区。

  以printf为例,调用printf的时候,当缓冲区满,或者带有'\n'时,才会输出(当然程序退出是即使没有这两个条件也输出)。   除此之外,当遇到scanf调用时,也会先刷新缓冲区,printf调用中的内容就会被输出。

  最后,可以调用fflush函数强制刷新缓冲区来输出缓冲区中的内容。

  

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

posted @ 2012-11-27 16:48  風之痕  阅读(1125)  评论(0编辑  收藏  举报