工作中遇到的一个问题,bug再现如下:
为什么PRintf没有输出?为什么有了/n 就能输出了?
printf /n是换行符,换行时会清空行缓存。或者手动flush stdout。
那么缓存是什么,为什么有缓存?
参考博客: http://blog.csdn.net/zhangxuechao_/article/details/45076367 linux文件缓冲区
上面博客解释了什么是为什么要用缓存区。缓存区的分类有: 完全缓冲和行缓冲(我觉得缓存和缓冲一个意思)
linux设备都对应一个文件,stdout是标准输出设备,是带有行缓冲的,而printf /n 会清空行缓存。再入上博客所说,行缓冲的大小是1024,所以1025的时候就会输出到stdout,对应的是屏幕设备。
参考博客 : http://blog.csdn.net/bullbat/article/details/7306178 Linux中什么是缓存,什么是块缓存,什么是页缓存。
那么在编程中,有哪些是带缓冲区的文件操作,有哪些是不带缓冲区的文件操作?
参考博客: http://blog.csdn.net/tanqiuwei/article/details/20641965
带缓冲区的文件操作是高级操作,比如fopen()
不带缓冲区的文件操作是低级操作,比如open()
应该尽可能使用带缓冲区的高级操作,同时编程时注意缓冲区,如何刷新。
那么我们如何设置缓冲区?
参考博客: http://blog.csdn.net/zhoubl668/article/details/7076324
参考博客:http://blog.csdn.net/farsightliuht/article/details/8190221 这个总结很好。
新闻热点
疑难解答