檔案描述符和流的關係?

2021-07-10 10:51:18 字數 855 閱讀 8757

任何一種作業系統中,程式在開始讀寫乙個檔案的內容之前,必須首先在程式與檔案之間建立連線或通訊通道,這一過程稱為開啟檔案。開啟乙個檔案的目的可以是為了讀或者為了寫,也可以是即讀又寫。

unix系統中有兩種機制用於描述程式與檔案的這種連線:

(1)檔案描述符

(2)流

檔案描述符 和 流 相同點:

1. 都是用來表示使用者程式與被操作的檔案之間的連線,並在此連線的 基礎上對檔案進行讀寫等訪問。

2. 都能表示與普通檔案,與裝置(如終端),與管道或者套接字的連線,使用者開啟乙個檔案,要麼返回檔案描述符,要麼返回乙個流。

3.  都包含了一大類的i/o庫函式

檔案描述符 和 流 不同點:

檔案描述符表示為int型別的物件。例如標準輸入對應檔案描述符0,標準輸出對應檔案描述符1。

而流則表示為指向結構file的指標file* ,因此流也稱為「檔案指標」

如果需要對特定裝置進行控制操作,必須使用檔案描述符方式,沒有函式能對流進行這類操作。

如果需要按照特殊的方式進行i/o操作(例如非阻塞的方式),必須使用檔案描述符方式,也沒有函式能對流進行這類操作。

檔案描述符 和 流的關係:

流給使用者程式提供了更高一級的(功能更強大,使用更簡化)的i/o介面,它處在檔案描述符方式的上層,也就是說,流函式是通過檔案描述符函式來實現的。

流 相對於 檔案描述符的優點:

執行實際輸入輸出操作的流函式集合比檔案描述符函式要豐富很多,而功能也靈活,強大不少。 

檔案描述符函式只提供簡單的傳送字元塊的函式

流函式提供格式化i/o,字元i/o,面向行的i/o等大量函式

流函式有利於程式的移植,任何基於ansi c的系統都支援流,檔案描述符的支援則較弱

檔案描述符 和 流的關係

任何一種作業系統中,程式在開始讀寫乙個檔案的內容之前,必須首先在程式與檔案之間建立連線或通訊通道,這一過程稱為開啟檔案。開啟乙個檔案的目的可以是為了讀或者為了寫,也可以是即讀又寫。unix系統中有兩種機制用於描述程式與檔案的這種連線 1 檔案描述符 2 流 檔案描述符 和 流 相同點 1.都是用來表...

檔案流和 檔案描述符

include apue.h int glob 6 int main void else if pid 0 i printf pid d,glob d,var d n getpid glob,var sprintf buf,d n i write stdout fileno,buf,strlen b...

檔案流和檔案描述符

檔案流和檔案描述符 檔案流和 檔案描述符 2011 10 19 16 08 apue 中的一道課後題 習題8.1 include apue.h int glob 6 int main void else if pid 0 i printf pid d,glob d,var d n getpid gl...