檔案IO(系統IO和標準IO)
阿新 • • 發佈:2019-02-06
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()
等等。