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做真正的寫入檔案系統工作),但是這其中的差別無所謂。
read 函式和 write 函式
read 函式和 write 函式 最近開始從事搜尋引擎的工作,所以又重新開始了c c 的旅程,時隔4年 不得不複習一下c c 其中的內容,以下內容有網上別的朋友發表的,也有我自己總結的.1.read include ssize t read int filedes,void buf,size t ...
read 函式和 write 函式
1.read include unistd.h ssize t read int filedes,void buf,size t nbytes 返回值 讀取到的位元組數 0 讀到 eof 1 出錯 read 函式從 filedes 指定的已開啟檔案中讀取 nbytes 位元組到 buf 中。以下幾種...
pipe函式 read函式和write函式
pipe include int pipe int pipefd 2 建立乙個管道,乙個單向資料通道。pipefd 0 表示管道的讀取端。pipefd 1 是指管道的寫端。read include ssize t read int fd,void buf,size t count 簡單來說就是從檔案...