Linux上C語言的自我學習一 檔案程式設計 介紹篇

2021-07-25 18:35:25 字數 1400 閱讀 7124

檔案系統是現代作業系統的組成部分之一。檔案系統是指按一定規律組織起來的有序的檔案組織結構,是構成系統中所有資料的基礎。

每種檔案系統型別儲存資料的基本格式都是不一樣的。但是,在linux下訪問檔案系統是,系統都把資料整理成乙個目錄樹下的檔案,幷包括我們熟悉的檔案的屬主和組id、保護位以及其他特徵。事實上,屬主、保護等資訊只有那些能儲存linux檔案的檔案系統型別才能提供。

linux同unix系統一樣,將目錄和裝置當作特殊檔案來處理。這種處理方法使所有與檔案相關的系統呼叫,無論對字元裝置的操作還是對塊裝置的操作,從程式設計員的角度來看完全是一樣的,因為其介面非常一致,所以使用起來十分簡便。

下面是我所學的主要關於檔案系統簡要地介紹。如有錯誤還請見諒,畢竟是自己自學的linux上的c語言程式設計。

linux的檔案系統通常有4部分組成:引導塊、超級塊、索引節點表(inode table)和資料塊。其中:

- 引導塊用來存放檔案系統的引導程式,用於系統引導或啟動作業系統。如果乙個檔案系統不安放作業系統,它的引導塊為空。

- 超級塊用來描述本檔案系統管理的資源,它包含空閒索引節點和空閒資料塊表,具體說明檔案系統的資源使用情況。

- 索引節點表用來儲存檔案的控制資訊,每個節點對應乙個檔案。

- 資料塊使磁碟上存放資料的磁碟塊,包括目錄檔案和資料。

下面介紹一下檔案型別:

- 普通檔案:

普通檔案也稱正規檔案,其特點是不包含檔案系統的結構資訊。通常所接觸到的圖形檔案、資料檔案、文件檔案、聲音檔案等。這種型別的檔案按其內部結構又可細分為兩個檔案型別:文字檔案和二進位制檔案。

- 目錄檔案:

連線檔案是一種特殊的檔案。它實際上是指向乙個真實存在的檔案的鏈結。比如使用者要在乙個目錄檔案中使用其他目錄檔案的檔案時,並不需要將其複製過來,而只需在此目錄中建立乙個鏈結檔案指向所要呼叫的檔案。在具體使用時,並不會感覺到它們有什麼不同。根據鏈結物件的不同,鏈結檔案又可細分為硬鏈結檔案和符號鏈結檔案。

- 裝置檔案:

正是由於它的存在,使得linux系統可以十分方便地訪問外部裝置。裝置檔案使用裝置的主裝置號和次裝置號來指定某外部裝置。主裝置號用於說明裝置型別,次裝置號用於說明具體裝置。裝置檔案又可以細分為兩種型別:塊裝置檔案和字元裝置檔案。

塊裝置檔案:是以固定長度的塊訪問資料的。

字元裝置檔案:是以指定字元(通常是乙個字元)訪問資料的。

- 管道檔案:

主要用於不同程序間的資訊傳遞。當兩個程序間需要進行資料或資訊傳遞時,可以通過管道檔案。乙個程序將需要傳遞的資料或資訊寫入管道的一端,另一程序從管道的另一端取得所需的資料或資訊。通常管道是建立在快取記憶體中的。採用先進先出的規定處理其中地 資料。可以細分為有名管道和無名管道兩種。

jQuery的自我學習(一)

jquery有許多簡潔的選擇器現在介紹其中常用的一些 id c1 a 10 a 子子孫孫 10 a 兒子 first last eq alex alex 123 input type text text 直接利用 符號搜尋標籤的id和class名稱,可以把他和css的選擇器歸為一類記憶,有很多相似之...

C語言 指向函式的指標自我理解

人之所以痛苦,那是因為你在成長。magic guo 乙個函式的執行過程 在編譯時,系統為函式 塊分配一塊儲存空間,生成乙個指向函式的指標變數,這個指標變數指向函式的入口位址,依次自上而下指向每一條 指令並執行指令。而這段儲存空間的起始位址 又稱入口位址 便稱為這個函式的指標。函式指標定義的一般形式 ...

c 對c語言上的增強

include iostream using namespace std c語言中的變數都必須在作用域開始的位置定義!c 中更強調語言的 實用性 所有的變數都可以在需要使用時再定義。include using namespace std c語言中的變數都必須在作用域開始的位置定義!c 中更強調語言的...