open 與fopen 的區別

2021-07-05 06:57:10 字數 1211 閱讀 3910

如題,看到好多呼叫裝置檔案的程式都是用的open函式,難道用fopen不可以嗎?

主要求高手談談這兩個函式的區別,以及具體在什麼時候該用哪個函式?

第 1 樓    tent8()

2006-8-26 17:53:47

得分:2   

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

linux中的系統函式是open,fopen是其封裝函式,個人觀點。僅供參考。

第 2 樓    fytzzh(我愛summer)

2006-8-26 20:12:19

得分:6   

檔案描述符是linux下的乙個概念,linux下的一切裝置都是以檔案的形式操作.如網路套接字、硬體裝置等。當然包括操作檔案。

fopen是標準c函式。返回檔案流而不是linux下檔案控制代碼。

第 3 樓    lurenfu(具有中國特色的社會主義初級階段,一百年不變)

2006-8-28 16:27:38

得分:2   

裝置檔案不可以當成流式檔案來用,只能用open

fopen是用來操縱正規檔案的,並且設有緩衝的,跟open還是有一些區別

第 4 樓    grass312(十步殺一人)

2006-8-28 20:03:37

得分:2   

一般用fopen開啟普通檔案,用open開啟裝置檔案

第 5 樓    hjmhjms(大笨汪)

2006-8-29 11:50:44

得分:2   

fopen是標準c裡的,而open是linux的系統呼叫.

他們的層次不同.

fopen可移植,open不能

第 6 樓    cllr(寂寞2001)

2006-8-29 20:13:08

得分:6   

我認為fopen和open最主要的區別是fopen在使用者態下就有了快取,在進行read和write的時候減少了使用者態和核心態的切換,而open則每次都需要進行核心態和使用者態的切換;表現為,如果順序訪問檔案,fopen系列的函式要比直接呼叫open系列快;如果隨機訪問檔案open要比fopen快。

fopen是有緩衝機制的,它使用了file這個結構才儲存緩衝資料。   

open沒有快取機制,每次讀操作都直接從檔案系統中獲取資料。   

看一下file這個結構的定義就知道區別了,file包含了乙個open返回回來的handle

fopen與open的區別

open和fopen的區別 1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再...

fopen與open的區別

fopen與open的區別 可以參考 4.6,比較詳細的講解了fopen,open,檔案描述符,檔案指標,以及在父程序與子程序的不同.摘自chinaunix open和fopen的區別 前者屬於低階io,後者是高階io。前者返回乙個檔案描述符 使用者程式區的 後者返回乙個檔案指標。前者無緩衝,後者有...

fopen與open的區別

2011 02 25 14 40 23 分類 c 字型大小訂閱 相同點 都是用來完成檔案開啟操作的函式 不同點 open是系統呼叫,返回的是檔案控制代碼,fopen是庫函式,返回的是乙個指向檔案結構的指標 open與 read,write等配合使用,fopen與 fread,fwrite等配合使用 ...