回覆列表
  • 1 # fzuuh37998

    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

  • 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,如套介面,管道之類的

  • 中秋節和大豐收的關聯?
  • 乒乓亞洲盃最後一個比賽日,具體賽程安排如何,男女單決賽誰有望奪冠?