回覆列表
-
1 # fzuuh37998
-
2 # 使用者1465424935672
1、fread是帶緩衝的,read不帶緩衝.
2、fopen是標準c裡定義的,open是POSIX中定義的.
3、fread可以讀一個結構.read在linux/unix中讀二進位制與普通檔案沒有區別.
4,fopen不能指定要建立檔案的許可權.open可以指定許可權.
5、fopen返回指標,open返回檔案描述符(整數).
6、linux/unix中任何裝置都是檔案,都可以用open,read.
7、fread與read的區別
f是ANSI的C標準庫。而後者的是UNIX下的系統呼叫。
fread帶有緩衝,是read的衍生,或者說fread是透過read實現的
要想直接和硬體打交道,必須用read
例子:
如果檔案的大小是8k。
你如果用read/write,且只分配了2k的快取,則要將此檔案讀出需要做4次系統呼叫
來實際從磁碟上讀出。
如果你用fread/fwrite,則系統自動分配快取,則讀出此檔案只要一次系統呼叫從磁
盤上讀出。
也就是用read/write要讀4次磁碟,而用fread/fwrite則只要讀1次磁碟。效率比read
/write要高4倍。
如果程式對記憶體有限制,則用read/write比較好。
一般用來處理檔案:
都用fread 和fwrite,它自動分配快取,速度會很快,比自己來做要簡單
如果要處理一些特殊的描述符,用read 和write,如套介面,管道之類的
1,fread是帶緩衝的,read不帶緩衝.2,fopen是標準c裡定義的,open是POSIX中定義的.3,fread可以讀一個結構.read在linux/unix中讀二進位制與普通檔案沒有區別.4,fopen不能指定要建立檔案的許可權.open可以指定許可權.5,fopen返回指標,open返回檔案描述符(整數).6,linux/unix中任何裝置都是檔案,都可以用open,read.如果檔案的大小是8k。你如果用read/write,且只分配了2k的快取,則要將此檔案讀出需要做4次系統呼叫來實際從磁碟上讀出。如果你用fread/fwrite,則系統自動分配快取,則讀出此檔案只要一次系統呼叫從磁碟上讀出。也就是用read/write要讀4次磁碟,而用fread/fwrite則只要讀1次磁碟。效率比read/write要高4倍。如果程式對記憶體有限制,則用read/write比較好。都用fread 和fwrite,它自動分配快取,速度會很快,比自己來做要簡單。如果要處理一些特殊的描述符,用read 和write,如套介面,管道之類的系統呼叫write的效率取決於你buf的大小和你要寫入的總數量,如果buf太小,你進入核心空間的次數大增,效率就低下。而fwrite會替你做快取,減少了實際出現的系統呼叫,所以效率比較高。如果只調用一次(可能嗎?),這倆差不多,嚴格來說write要快一點點(因為實際上fwrite最後還是用了write做真正的寫入檔案系統工作),但是這其中的差別無所謂。open(開啟檔案)相關函式read,write,fcntl,close,link,stat,umask,unlink,fopen表頭檔案#include