檔案IO程式設計二

2021-07-30 14:00:58 字數 770 閱讀 2561

上一章主要是講了檔案系統以及整個操作的流程,這一講主要是講vfs虛擬檔案系統 引言

linux中允許眾多不同的檔案系統共存,如ext2,ext3,vfat等。通過使用同一套檔案i/o系統呼叫即可對linux中的任意檔案進行操作而無需考慮檔案系統格式。對檔案的操作也可以跨檔案系統而執行。我們可以使用cp命令從vfat檔案系統格式的硬碟拷貝資料到ext3檔案系統格式的硬碟,這操作涉及到兩個不同的檔案系統。

不僅普通檔案,目錄、字元裝置、塊裝置、套接字等在linux中都是以檔案被對待;他們雖然型別不同,但是都是同一套操作介面。

虛擬檔案系統(簡稱vfs)是linux核心中的乙個軟體層,用於給使用者空間的程式提供檔案系統介面;同時,它也提供了核心中的乙個抽象功能,允許不同的檔案系統共存。 系統中所有的檔案系統不但依賴vfs共存,而且也依靠vfs協同工作。

為了能夠支援各種實際檔案系統,vfs定義了所有檔案系統都支援的介面和資料結構;同時實際檔案系統也提供vfs所期望的抽象介面和資料結構,將自身的諸如檔案、目錄等概念在形式上與vfs的定義保持一致。換句話說,乙個實際的檔案系統想要被linux支援,就必須提供乙個符合vfs標準的介面,才能與vfs協同工作。實際上檔案系統在統一的介面和資料結構下隱藏了具體的實現細節,所以在vfs層和核心的其他部分看來,所有的檔案系統都是相同的。正是由於在核心中引入了vfs,跨檔案系統的檔案操作才能實現,「一切皆是檔案」 的口號才能承諾。下圖顯示了vfs在核心中與實際的檔案系統的協同關係:

高階程式設計之檔案I O 二

函 數 接 口 1.time time t time time t t 功能 獲得1970年到現在所過的秒數 引數 t 要存放秒數空間的指標 返回值 成功返回所過的秒數 失敗返回 time t 1 2.localtime struct tm localtime const time t timep ...

檔案I O程式設計

linux的輸入 輸出 i o 操作,通常分為 個方面 開啟 讀取 寫入 定位和關閉 對應的有 個系統呼叫 open read write lseek 和close 這 個函式,也稱為不帶緩衝區的i o操作。程式設計師可以直接操作硬體,這樣為開發驅動等底層的系統應用提供了方便。這些函式屬於posix...

linux 檔案I O 程式設計

1.基本操作 include include include open fd open tmp hello.c o wronly o creat,0600 close close fd read read fd,buf,len write write fd,buf,len lseek off t l...