关于linux下面printf函数缓冲区问题
linux下面每个进程会维护一个printf/scanf的缓冲区。
以printf为例,调用printf的时候,当缓冲区满,或者带有'\n'时,才会输出(当然程序退出是即使没有这两个条件也输出)。 除此之外,当遇到scanf调用时,也会先刷新缓冲区,printf调用中的内容就会被输出。
最后,可以调用fflush函数强制刷新缓冲区来输出缓冲区中的内容。
在多线程程序中尤其值得注意,fork时,缓冲区也被fork,要是之前缓冲区没有被刷新过的话,缓冲区中的内容依然存在,在子进程中再次调用printf就会出现自己不想要的输出。