1. 程式人生 > >檔案IO(系統IO和標準IO)

檔案IO(系統IO和標準IO)

Linux系統下操作檔案有兩類基本API,一類由系統呼叫提供,被稱為系統IO。一類由標準C庫提供,被稱為標準IO。

拓展:

它們都是Linux下操作檔案的標準介面,那又有什麼區別?我們該如何選擇使用呢?

第一:系統IO是更底層的介面,因此任何裝置和檔案最終都是可以通過系統IO來操作。系統IO不提供緩衝區,意味著每次讀寫都必須進入核心,對於大資料量的讀寫操作會影響效率。

第二:標準IO是由標準庫提供的介面,因此功能更加豐富,而且標準IO提供緩衝區,增加資料處理的吞吐量。標準IO還對讀寫操作提供更加豐富的操作方式,例如按位元組、按行、按塊、按資料格式讀寫。但是有些特殊檔案無法使用標準IO,比如socket套介面,比如LCD顯示屏。

第三:在能使用標準IO的場合,我們儘量使用它,畢竟它功能豐富效率高,但在無法使用標準IO的場合,我們還是隻能用系統IO。

第四:所謂的系統IO,就是指這樣的一堆函式:

open()

read()

wirte()

lseek()

ioctl()

close()

等等

所謂的標準IO,指的是這一堆函式:

fopen()

fgets()

fread()

scanf()

getchar()

fputs()

fwrite()

printf()

fseek()

fclose()

等等。