在碼代碼的時候咱們常常會遇到文件系統類型的操做,好比打開一個文件,寫文件,讀文件之類的操做。涉及這些操做的函數有open(),write(),read()以及fopen(),fwrite(),fread()等函數。那麼這些f開頭的文件系統操做函數和非f開頭的文件系統操做函數有什麼區別?這就要介紹一下緩衝文件操做系統和非緩衝文件操做系統,這兩類系統都是C語言使用的磁盤文件系統。函數
緩衝文件操做系統:系統會自動的在內存區爲每個正在使用的文件開闢一塊緩衝區,緩衝區的大小通常由各個C的版本規定,通常的爲512Byte即0.5K大小。今後盤向內存讀數據時,則一次將一些數據從磁盤文件送內存緩衝區(充滿緩衝區),而後再從緩衝區逐個將數送給接收變量(文件描述符);從內存寫數據到磁盤文件時,現將數據塞滿緩衝區,在一次性將數據從緩衝區送到磁盤文件。用緩衝區能夠一次讀入一批數據,或輸出一批數據,而不是執行一次輸入或輸出函數就去訪問一次磁盤,這樣作的目的是減小對磁盤的實際讀寫次數,由於每一次讀寫都要移動磁頭並尋找磁道扇區,花費必定的時間。緩衝文件系統是藉助文件結構體指針來對文件進行管理,經過文件指針來對文件進行訪問,既能夠讀寫字符、字符串、格式化數據,也能夠讀寫二進制數據,緩衝文件系統函數通常是由f開頭的函數,如fopen(),fwrite(),fread()。操作系統
非緩衝文件系統:非緩衝文件系統不會自動地設置緩衝區,須要用戶根據本身的須要去設置,在傳統的UNIX下,用緩衝文件系統來處理文本文件,用非緩衝文件系統來處理二進制文件。非緩衝文件系統依賴於操做系統,經過操做系統的功能對文件進行讀寫,是系統級的輸入輸出,它不設文件結構體指針,只能讀寫二進制文件,但效率高、速度快。指針