linux 中 open和fopen的區別

2021-08-18 23:35:51 字數 1466 閱讀 5062

open和fopen的區別: 

主要區別是涉及到系統,而不是緩衝。帶f的是標準io,**可以移植。

不帶f只能在unix/linux系統呼叫。  open乙個是整數,fopen乙個是指標(file *)。  二者區別大致可以總結為以下幾點: 

1,fread是帶緩衝的,read不帶緩衝.  

2,fopen是標準c裡定義的,open是posix中定義的.  

3,fread可以讀乙個結構.read在linux/unix中讀二進位制與普通檔案沒有區別.  

4,fopen不能指定要建立檔案的許可權.open可以指定許可權.  

5,fopen返回指標,open返回檔案描述符(整數).  

6,linux/unix中任何裝置都是檔案,都可以用open,read.

1.非緩衝檔案系統 

緩衝檔案系統是借助檔案結構體指標來對檔案進行管理,通過檔案指標來對檔案進行訪問,

既可以讀寫字元、字串、格式化資料,也可以讀寫二進位制資料。非緩衝 檔案系統依賴於作業系統,

通過作業系統的功能對檔案進行讀寫,是系統級的輸入輸出,它不設檔案結構體指標,

只能讀寫二進位制檔案,但效率高、速度快,由於 ansi標準不再包括非緩衝檔案系統,因此建議大家最好不要選擇它。 

open, close, read, write, getc, getchar, putc, putchar 等 

2.緩衝檔案系統 

緩衝檔案系統的特點是:在記憶體開闢乙個「緩衝區」,為程式中的每乙個檔案使用,

當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體「緩衝區」,

裝滿後再從 記憶體「緩衝區」依此讀入接收的變數。執行寫檔案的操作時,

先將資料寫入記憶體「緩衝區」,待記憶體「緩衝區」裝滿後再寫入檔案。

由此可以看出,記憶體 「緩衝區」的大小,影響著實際操作外存的次數,

記憶體「緩衝區」越大,則操作外存的次數就少,執行速度就快、效率高。

一般來說,檔案「緩衝區」的大小隨機器 而定。 

fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等

前者屬於低階io,後者是高階io。 

前者返回乙個檔案描述符(使用者程式區的),後者返回乙個檔案指標。 

前者無緩衝,後者有緩衝。 

前者與 read, write 等配合使用, 後者與 fread, fwrite等配合使用。 

後者是在前者的基礎上擴充而來的,在大多數情況下,用後者。 

open 是linux/unix系統呼叫 返回的是檔案控制代碼,檔案的控制代碼是檔案在檔案描述副表裡的索引,

fopen是c的庫函式,返回的是乙個指向檔案結構的指標。

fopen是ansic標準中的c語言庫函式,在不同的系統中應該呼叫不同的核心api 

linux中的系統函式是open,fopen是其封裝函式。 

fopen最終還是要呼叫底層的系統呼叫open。

linux 中 open和fopen的區別

open和fopen的區別 主要區別是涉及到系統,而不是緩衝。帶f的是標準io,可以移植。不帶f只能在unix linux系統呼叫。open乙個是整數,fopen乙個是指標 file 二者區別大致可以總結為以下幾點 1,fread是帶緩衝的,read不帶緩衝.2,fopen是標準c裡定義的,open...

Linux中open函式詳解

open 開啟檔案 相關函式 read,write,fcntl,close,link,stat,umask,unlink,fopen 頭文件 include include include 定義函式 int open const char pathname,int flags int open co...

Linux中C語言open和fopen相關旗標

函式原型 int open const char pathname,int flags int open const char pathname,int flags,mode t mode 作用 以各種方式開啟檔案 返回值 返回開啟的檔案控制代碼,1 開啟失敗 函式說明引數pathname 指向欲開...