c++ printf 多线程 重定向输出

1.printf输出其实是有一个缓冲区的,并不是程序一执行完printf这句代码后就立即输出,而是要在缓冲区刷新的时候才输出到屏幕上。

2.在平时我们使用中如果在printf中加入了“\n”换行标志,则会立即刷新缓冲区,输出。

3.如果使用"> xxx.txt"将控制台的输出信息重定向到文件中的时候,"\n"是不会起作用的,因为重定向到文件中后换行符被默认禁止了,所以这个时候的重定向输出就需要其他方式来及时的刷新缓冲区,特别是如果你的代码是多线程并且每个线程都有输出的时候。解决方法是加入这样一行代码进行配置:setvbuf(stdout, NULL, _IONBF, 0);

 

posted @ 2021-02-22 14:50  maycpou  阅读(930)  评论(0编辑  收藏  举报