先上圖
read、write函式常常被稱為 unbuffered i/o。指的是無使用者輸入級緩衝區,但不保證不使用核心緩衝區。
使用者程式在讀寫檔案時既可以呼叫c標準i/o庫函式,也可以直接呼叫底層的系統i/o函式,有什麼區別呢?
c標準庫的i/o緩衝區有三種型別:全緩衝、行緩衝和無緩衝。
如果緩衝區寫滿了就寫回核心。對於駐留在磁碟上的檔案通常是由標準i/o庫實施全緩衝的。在乙個流上執行第一次i/o操作時,相關標準i/o函式通常呼叫malloc獲得需使用的緩衝區。
如果使用者程式寫的資料中有換行符就把這一行寫回核心,或者如果緩衝區寫滿了就寫回核心。標準輸入和標準輸出對應終端裝置時通常是行緩衝的。
使用者程式每次調庫函式做寫操作都要通過系統呼叫寫回核心。
標準錯誤輸出通常是無緩衝的,這樣使用者程式產生的錯誤資訊可以盡快輸出到裝置。這裡的無緩衝,並不是指緩衝區大小為0,其實,還是有緩衝的,大小為1。
檔案I O之C標準庫函式和系統庫函式差別
1.首先c標準庫函式是工作在系統庫函式之上的。c標準庫函式在讀寫檔案時候都有乙個檔案流指標。file fp null fp fopen f path,r fp檔案流指標,其指向結構體例如以下圖所看到的。檔案描寫敘述符指向磁碟檔案。在進行檔案讀寫操作時候是先讀寫到緩衝區。然後再呼叫系統應用層api w...
系統函式I O操作與標準庫函式流操作
對於應用程式設計的i o操作 對於應用程式設計的io操作有兩種函式操作方式,一為直接呼叫系統核心的api操作列open,其次為呼叫c標準的庫函式操作列fopen。系統呼叫方式函式的返回值為控制代碼,而c庫返回的是檔案結構體指標。以下為系統呼叫方式對於open,lseek,write,read,的簡單...
常用標準I O庫函式總結
1 fopen fopen 函式主要用於對檔案和終端的輸入輸出。但是如果要對裝置的行為進行更為明確的行為控制,那最好使用底層系統呼叫,因為這樣可以避免庫函式帶來的一些非預期的潛在 函式原型 include file fopen const char filename,const char mode ...