系統I O函式與C標準庫函式

2022-06-05 20:00:13 字數 718 閱讀 2135

先上圖

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 ...