工作中遇到的一個問題,bug再現如下:
為什么PRintf沒有輸出?為什么有了/n 就能輸出了?
printf /n是換行符,換行時會清空行緩存?;蛘呤謩觙lush 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 這個總結很好。
新聞熱點
疑難解答