版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、UNIXUNIX文件系統(tǒng)文件系統(tǒng) 概述概述 文件是保存信息的基本結(jié)構(gòu)。概念上,計算機中的文件類似于日文件是保存信息的基本結(jié)構(gòu)。概念上,計算機中的文件類似于日 常使用的文件;技術(shù)上,文件是保存在某種介質(zhì)上的字節(jié)序列。文件常使用的文件;技術(shù)上,文件是保存在某種介質(zhì)上的字節(jié)序列。文件 可以包含任何可以表示為字節(jié)序列的信息。每個文件通過文件名進行可以包含任何可以表示為字節(jié)序列的信息。每個文件通過文件名進行 標識。用戶對文件進行操作只需利用文件名。而操作系統(tǒng)負責定位文標識。用戶對文件進行操作只需利用文件名。而操作系統(tǒng)負責定位文 件所作的位置并維護它的有關(guān)文件的信息。件所作的位置并維護它的有關(guān)文件的信息。
2、 提綱提綱 1 UNIX1 UNIX系統(tǒng)中的文件系統(tǒng)中的文件 (普通文件、目錄文件、特殊文件、(普通文件、目錄文件、特殊文件、UNIXUNIX文件的許可機制)文件的許可機制) 2 UNIX2 UNIX文件系統(tǒng)設(shè)計文件系統(tǒng)設(shè)計 (文件管理系統(tǒng)結(jié)構(gòu)、文件系統(tǒng)維護、物理卷與邏輯卷定義、文件系統(tǒng)(文件管理系統(tǒng)結(jié)構(gòu)、文件系統(tǒng)維護、物理卷與邏輯卷定義、文件系統(tǒng) 的存儲結(jié)構(gòu)、索引節(jié)點和目錄文件的作用、文件的多重索引存儲結(jié)構(gòu)、的存儲結(jié)構(gòu)、索引節(jié)點和目錄文件的作用、文件的多重索引存儲結(jié)構(gòu)、 可支持多種文件系統(tǒng)的機制)可支持多種文件系統(tǒng)的機制) 3 UNIX3 UNIX文件系統(tǒng)的動態(tài)管理方法文件系統(tǒng)的動態(tài)管理方法
3、 (文件系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)、文件的檢索過程、文件共享的實現(xiàn)及應(yīng)用)(文件系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)、文件的檢索過程、文件共享的實現(xiàn)及應(yīng)用) 4 4 用于文件管理的系統(tǒng)調(diào)用用于文件管理的系統(tǒng)調(diào)用 (文件描述符、用于文件創(chuàng)建和文件聯(lián)接的系統(tǒng)調(diào)用、文件的打開與關(guān)(文件描述符、用于文件創(chuàng)建和文件聯(lián)接的系統(tǒng)調(diào)用、文件的打開與關(guān) 閉系統(tǒng)調(diào)用、文件讀和寫系統(tǒng)調(diào)用、文件隨機存取系統(tǒng)調(diào)用、文件記錄閉系統(tǒng)調(diào)用、文件讀和寫系統(tǒng)調(diào)用、文件隨機存取系統(tǒng)調(diào)用、文件記錄 鎖定系統(tǒng)調(diào)用)鎖定系統(tǒng)調(diào)用) 5 5 文件備份與恢復文件備份與恢復 1 UNIX1 UNIX系統(tǒng)中的文件系統(tǒng)中的文件 (1)UNIX的文件系統(tǒng)是按照層次性結(jié)構(gòu)建立
4、的的文件系統(tǒng)是按照層次性結(jié)構(gòu)建立的。文件系統(tǒng)內(nèi)部。文件系統(tǒng)內(nèi)部 使用一個多級目錄結(jié)構(gòu)管理構(gòu)件,控制著多級多層次的文件體系。使用一個多級目錄結(jié)構(gòu)管理構(gòu)件,控制著多級多層次的文件體系。 文件系統(tǒng)從根目錄開始向下延伸組成了文件系統(tǒng)從根目錄開始向下延伸組成了文件系統(tǒng)的倒置樹型的目錄文件系統(tǒng)的倒置樹型的目錄 關(guān)系體系關(guān)系體系。 (2)UNIX文件就是一組字節(jié)序列文件就是一組字節(jié)序列。操作系統(tǒng)沒有給文件強加任。操作系統(tǒng)沒有給文件強加任 何的結(jié)構(gòu)約束,也沒有對文件的內(nèi)容附加任何的特殊定義,對操作何的結(jié)構(gòu)約束,也沒有對文件的內(nèi)容附加任何的特殊定義,對操作 系統(tǒng)而言,文件就是一組字節(jié)序列的數(shù)據(jù)而已。系統(tǒng)而言,文
5、件就是一組字節(jié)序列的數(shù)據(jù)而已。 (3)UNIX系統(tǒng)中每一個對象都表示為文件。系統(tǒng)中每一個對象都表示為文件。并不僅僅是通常并不僅僅是通常 的數(shù)據(jù)集合,為了便于管理和調(diào)度,的數(shù)據(jù)集合,為了便于管理和調(diào)度,UNIX將系統(tǒng)中的每個硬件設(shè)將系統(tǒng)中的每個硬件設(shè) 備表示為文件,并采用施加在一般文件上的調(diào)度和管理方法來解決備表示為文件,并采用施加在一般文件上的調(diào)度和管理方法來解決 系統(tǒng)中硬件設(shè)備問題。系統(tǒng)中硬件設(shè)備問題。 實現(xiàn)系統(tǒng)中所有對象統(tǒng)一調(diào)度和管理。實現(xiàn)系統(tǒng)中所有對象統(tǒng)一調(diào)度和管理。 1 UNIX1 UNIX系統(tǒng)中的文件系統(tǒng)中的文件 總結(jié):在總結(jié):在UNIX系統(tǒng)中,文件是一些字節(jié)序列,即系統(tǒng)中的所有系統(tǒng)
6、中,文件是一些字節(jié)序列,即系統(tǒng)中的所有 一切,包括鍵盤在內(nèi)的一切,包括鍵盤在內(nèi)的I/O設(shè)備都是一個文件,所有文件以倒置樹設(shè)備都是一個文件,所有文件以倒置樹 型層次結(jié)構(gòu)進行組織。型層次結(jié)構(gòu)進行組織。 / / etcusersbindevhomebin userdevsbinhomeuser1user2 prog.c ls.txt 1.1 1.1 文件的分類文件的分類 LINUX/UNIX支持五種文件類型:支持五種文件類型: (a)普通文件)普通文件 (b)目錄文件)目錄文件 (c)特殊)特殊/設(shè)備文件設(shè)備文件 (d)命名管道)命名管道 (e)符號鏈接)符號鏈接 1.1 1.1 文件的分類文件的分
7、類 (a)普通文件)普通文件 一般說來,一般說來,UNIX系統(tǒng)中的文件是以字節(jié)為單位的數(shù)據(jù)信息流系統(tǒng)中的文件是以字節(jié)為單位的數(shù)據(jù)信息流 集合,因此普通文件可以是包括文本文件,源程序文件,數(shù)據(jù)文件集合,因此普通文件可以是包括文本文件,源程序文件,數(shù)據(jù)文件 以及可執(zhí)行的二進制文件等。這部分我們所說的文件和我們通常所以及可執(zhí)行的二進制文件等。這部分我們所說的文件和我們通常所 建立和使用的文件是同種類型的。建立和使用的文件是同種類型的。 在管理中,操作系統(tǒng)會給文件設(shè)立各種屬性信息,因為在在管理中,操作系統(tǒng)會給文件設(shè)立各種屬性信息,因為在 UNIX系統(tǒng)內(nèi)部,文件系統(tǒng)對文件的管理是通過對文件的屬性信息系統(tǒng)
8、內(nèi)部,文件系統(tǒng)對文件的管理是通過對文件的屬性信息 的管理完成的。的管理完成的。 1.1 1.1 文件的分類文件的分類 在在UNIX系統(tǒng)中,普通文件的基本屬性信息包括以下一些:系統(tǒng)中,普通文件的基本屬性信息包括以下一些: 文件名文件名 文件的特征說明文件的特征說明 文件的索引號文件的索引號 文件在系統(tǒng)中的唯一表示,類似的,每個文件在系統(tǒng)中的唯一表示,類似的,每個UNIX 用戶有一個唯一的用戶有一個唯一的id 文件的字節(jié)數(shù)文件的字節(jié)數(shù) 表示文件大小的信息表示文件大小的信息 最后訪問時間最后訪問時間 表示文件上次被修改的時間表示文件上次被修改的時間 文件存取權(quán)限文件存取權(quán)限 描述系統(tǒng)中不同的用戶對該
9、文件的讀寫和執(zhí)行描述系統(tǒng)中不同的用戶對該文件的讀寫和執(zhí)行 的權(quán)限的權(quán)限 屬主名屬主名 標識該文件的主人標識該文件的主人 屬組名屬組名 標識該文件所屬的用戶組標識該文件所屬的用戶組 1.1 1.1 文件的分類文件的分類 Lisiredhat9$ ls -la total 44 drwx- 4 lisi lisi 4096 Oct 8 . drwxr-xr-x 4 root root 4096 Sep 12 . drwxrwxr-x 2 lisi lisi 4096 Oct 8 aa -rw-rw-r- 1 lisi lisi 38 Oct 8 aa.txt -rw- 1 lisi lisi 46
10、3 Oct 9 .bash_history -rw-r-r- 1 lisi lisi 24 Sep 12 .bash_logout -rw-r-r- 1 lisi lisi 191 Sep 12 .bash_profile -rw-r-r- 1 lisi lisi 124 Sep 12 .bashrc -rw-r-r- 1 lisi lisi 118 Sep 12 .gtkrc lisiredhat9$ 文件類型及文件類型及 用戶訪問權(quán)限用戶訪問權(quán)限 文件鏈接數(shù)文件鏈接數(shù)文件的屬主名文件的屬主名 文件的屬組名文件的屬組名文件的大小文件的大小 按字節(jié)計算按字節(jié)計算 文件的修改日期文件的修改日期文
11、件的文件名文件的文件名 1.1 1.1 文件的分類文件的分類 UNIXUNIX系統(tǒng)去掉了對文件格式和結(jié)構(gòu)的約束,將系統(tǒng)去掉了對文件格式和結(jié)構(gòu)的約束,將所有的文件都看成是所有的文件都看成是 無結(jié)構(gòu)的字節(jié)序列無結(jié)構(gòu)的字節(jié)序列。并且。并且在在UNIXUNIX中,根據(jù)用戶的需要可以存在多種類中,根據(jù)用戶的需要可以存在多種類 型的文件解釋型的文件解釋/ /處理程序,對每一個具體的程序而言,它們都會對文處理程序,對每一個具體的程序而言,它們都會對文 件中的內(nèi)容進行字符的區(qū)分,含義的解釋以及內(nèi)容存放方式的描述等。件中的內(nèi)容進行字符的區(qū)分,含義的解釋以及內(nèi)容存放方式的描述等。 因此不同的解釋程序?qū)ν晃募慕?/p>
12、釋操作會產(chǎn)生不同的效果。因此不同的解釋程序?qū)ν晃募慕忉尣僮鲿a(chǎn)生不同的效果。 對用戶而言,對用戶而言,文件可以有多種邏輯結(jié)構(gòu)文件可以有多種邏輯結(jié)構(gòu),不同的邏輯結(jié)構(gòu)可以適應(yīng),不同的邏輯結(jié)構(gòu)可以適應(yīng) 不同的應(yīng)用程序的要求,比如記錄式文件結(jié)構(gòu)很適合用來存儲數(shù)據(jù)庫不同的應(yīng)用程序的要求,比如記錄式文件結(jié)構(gòu)很適合用來存儲數(shù)據(jù)庫 信息,而可執(zhí)行程序通常使用二進制的無結(jié)構(gòu)文件。針對這些不同的信息,而可執(zhí)行程序通常使用二進制的無結(jié)構(gòu)文件。針對這些不同的 文件邏輯結(jié)構(gòu)(雖然它們本質(zhì)上都是字節(jié)序列),文件邏輯結(jié)構(gòu)(雖然它們本質(zhì)上都是字節(jié)序列),UNIXUNIX系統(tǒng)內(nèi)部可以系統(tǒng)內(nèi)部可以 采用不同的存儲方式和查詢方
13、法來完成對這些文件的處理。采用不同的存儲方式和查詢方法來完成對這些文件的處理。 常見的普通文件的邏輯結(jié)構(gòu)有以下幾種:常見的普通文件的邏輯結(jié)構(gòu)有以下幾種: 堆文件、順序文件、索引順序文件、索引文件、堆文件、順序文件、索引順序文件、索引文件、散列文件散列文件 1.1 1.1 文件的分類文件的分類 (b)目錄文件)目錄文件 目錄文件是能夠存放任何類型文件的容器,包括子目錄。目錄文件是能夠存放任何類型文件的容器,包括子目錄。 在在UNIX系統(tǒng)中,目錄也是一種文件。在應(yīng)用上與其他操作系統(tǒng)系統(tǒng)中,目錄也是一種文件。在應(yīng)用上與其他操作系統(tǒng) 如如windows中的目錄定義相似。在文件管理中仍然作為一種文件來中
14、的目錄定義相似。在文件管理中仍然作為一種文件來 對待。對待。 UNIX的目錄結(jié)構(gòu)與的目錄結(jié)構(gòu)與dos以及以及windows的目錄結(jié)構(gòu)很相似,是分層的目錄結(jié)構(gòu)很相似,是分層 次的樹狀結(jié)構(gòu),例如下圖所示的一個次的樹狀結(jié)構(gòu),例如下圖所示的一個UNIX系統(tǒng)的目錄結(jié)構(gòu)系統(tǒng)的目錄結(jié)構(gòu) 。 1.1 1.1 文件的分類文件的分類 這個目錄結(jié)構(gòu)的形狀類似于一棵倒置的樹,通常都稱之為這個目錄結(jié)構(gòu)的形狀類似于一棵倒置的樹,通常都稱之為“目錄樹目錄樹”, 它的頂端頂點它的頂端頂點 / 稱為根目錄稱為根目錄,根目錄下還有各級子目錄,橢圓形部分中的內(nèi)根目錄下還有各級子目錄,橢圓形部分中的內(nèi) 容表示目錄樹中的樹葉節(jié)點(就是
15、不再產(chǎn)生新節(jié)點的單元)。容表示目錄樹中的樹葉節(jié)點(就是不再產(chǎn)生新節(jié)點的單元)。UNIX系統(tǒng)的系統(tǒng)的 目錄樹結(jié)構(gòu)和目錄樹結(jié)構(gòu)和dos,windows下目錄樹結(jié)構(gòu)最大的不同點就是,下目錄樹結(jié)構(gòu)最大的不同點就是,UNIX系統(tǒng)的系統(tǒng)的 目錄樹只有一個根節(jié)點,而目錄樹只有一個根節(jié)點,而dos及及windows的目錄樹結(jié)構(gòu)有多個根節(jié)點,通的目錄樹結(jié)構(gòu)有多個根節(jié)點,通 常是一個磁盤分區(qū)就有一個對應(yīng)的根結(jié)點。常是一個磁盤分區(qū)就有一個對應(yīng)的根結(jié)點。 / / etcusersbindevhomebin userdevsbinhomeuser1user2 prog.c ls.txt 1.1 1.1 文件的分類文件的
16、分類 (c)特殊)特殊/設(shè)備文件設(shè)備文件 UNIX系統(tǒng)為了便于管理,將機器的硬件資源看作是文件,并且系統(tǒng)為了便于管理,將機器的硬件資源看作是文件,并且 以文件的形式進行調(diào)度和管理。為了和普通文件進行區(qū)別,以文件的形式進行調(diào)度和管理。為了和普通文件進行區(qū)別,UNIX 系統(tǒng)把這些涉及到系統(tǒng)硬件資源的內(nèi)容定義為系統(tǒng)把這些涉及到系統(tǒng)硬件資源的內(nèi)容定義為“特殊文件特殊文件”。這樣。這樣 一來,特殊文件所涉及到的機器硬件物理設(shè)備一來,特殊文件所涉及到的機器硬件物理設(shè)備,比如硬盤,軟盤,打比如硬盤,軟盤,打 印機,顯示器等等,都被賦予了文件的屬性如文件類型,屬主,屬印機,顯示器等等,都被賦予了文件的屬性如文
17、件類型,屬主,屬 組,訪問權(quán)限。用戶對這些物理設(shè)備進行操作時,就類似與在對文組,訪問權(quán)限。用戶對這些物理設(shè)備進行操作時,就類似與在對文 件進行讀寫一樣。件進行讀寫一樣。 設(shè)備分為兩種類型:設(shè)備分為兩種類型: 字符特殊設(shè)備文件字符特殊設(shè)備文件:對應(yīng)于執(zhí)行面向字符的:對應(yīng)于執(zhí)行面向字符的I/OI/O的設(shè)備。的設(shè)備。 塊特殊設(shè)備文件塊特殊設(shè)備文件:對應(yīng)于以字節(jié)塊進行:對應(yīng)于以字節(jié)塊進行I/OI/O操作的設(shè)備。操作的設(shè)備。 1.1 1.1 文件的分類文件的分類 (d)命名管道)命名管道 命名管道為同一個命名管道為同一個LINUX系統(tǒng)上的進程相互通信提供了一種機制。系統(tǒng)上的進程相互通信提供了一種機制。
18、(e) 符號鏈接文件符號鏈接文件 符號鏈接文件可以符號鏈接文件可以“指向指向”(即引用)一個文件。通過命令(即引用)一個文件。通過命令ln -s 創(chuàng)建一個符號鏈接并存放它所指的文件的路徑名。創(chuàng)建一個符號鏈接并存放它所指的文件的路徑名。 (f)套接字文件)套接字文件 套接字是兩個進程間的通信端點;這些進程可以運行在相同的系套接字是兩個進程間的通信端點;這些進程可以運行在相同的系 統(tǒng)上,也可運行在網(wǎng)絡(luò)中的不同系統(tǒng)上。統(tǒng)上,也可運行在網(wǎng)絡(luò)中的不同系統(tǒng)上。 1.2 1.2 文件的許可機制文件的許可機制 UNIX文件的許可機制主要體現(xiàn)在文件的訪問權(quán)限上。假設(shè)執(zhí)行命令文件的許可機制主要體現(xiàn)在文件的訪問權(quán)限
19、上。假設(shè)執(zhí)行命令 ls l,通常的顯示結(jié)果會是這個樣子:,通常的顯示結(jié)果會是這個樣子: lisiredhat9$ ls -l total 44 drwx- 4 lisi lisi 4096 Oct 8 . drwxr-xr-x 4 root root 4096 Sep 12 . drwxrwxr-x 2 lisi lisi 4096 Oct 8 aa -rw-rw-r- 1 lisi lisi 38 Oct 8 aa.txt -rw- 1 lisi lisi 463 Oct 9 .bash_history -rw-r-r- 1 lisi lisi 24 Sep 12 .bash_logout
20、-rw-r-r- 1 lisi lisi 191 Sep 12 .bash_profile -rw-r-r- 1 lisi lisi 124 Sep 12 .bashrc -rw-r-r- 1 lisi lisi 118 Sep 12 .gtkrc lisiredhat9$ 1.2 1.2 文件的許可機制文件的許可機制 每行的第一項是文件類型和許可機制信息,其中文件類型是第一個字每行的第一項是文件類型和許可機制信息,其中文件類型是第一個字 符。系統(tǒng)中設(shè)定的文件類型有以下一些符。系統(tǒng)中設(shè)定的文件類型有以下一些: “-” 一個減號,表示該文件為普通文件,如文本文件,可執(zhí)行文件等一個減號,表示該文件
21、為普通文件,如文本文件,可執(zhí)行文件等 等。等。 “d” 字符字符d,表示該文件類型為目錄文件,表示該文件類型為目錄文件 “b” 字符字符b,表示該文件類型為塊設(shè)備文件,表示該文件類型為塊設(shè)備文件 “c” 字符字符c,表示該文件類型為字符設(shè)備文件,表示該文件類型為字符設(shè)備文件 “l(fā)” 字符字符l,表示鏈接文件,表示鏈接文件 “p” 字符字符p,表示管道文件,表示管道文件 第一項的后面第一項的后面9個字母,表示的是文件的許可機制,也就是我們說的個字母,表示的是文件的許可機制,也就是我們說的 訪問權(quán)限。訪問權(quán)限。 2 UNIX2 UNIX文件系統(tǒng)設(shè)計文件系統(tǒng)設(shè)計 UNIX操作系統(tǒng)的文件管理系統(tǒng)在為用
22、戶提供的文件調(diào)度和管理操作系統(tǒng)的文件管理系統(tǒng)在為用戶提供的文件調(diào)度和管理 方面有許多特點,比如方面有許多特點,比如: : 1)文件被定義成無結(jié)構(gòu)限制的字節(jié)序列或稱為字節(jié)流。)文件被定義成無結(jié)構(gòu)限制的字節(jié)序列或稱為字節(jié)流。 2)文件系統(tǒng)的目錄結(jié)構(gòu)是分層次的樹型結(jié)構(gòu)并且只有唯一的根節(jié))文件系統(tǒng)的目錄結(jié)構(gòu)是分層次的樹型結(jié)構(gòu)并且只有唯一的根節(jié) 點。點。 3)機器的硬件設(shè)備被賦予了一般性文件同樣的調(diào)度和管理模式。)機器的硬件設(shè)備被賦予了一般性文件同樣的調(diào)度和管理模式。 下面主要來了解下面主要來了解UNIX文件系統(tǒng)的內(nèi)部結(jié)構(gòu)和設(shè)計思想等內(nèi)容文件系統(tǒng)的內(nèi)部結(jié)構(gòu)和設(shè)計思想等內(nèi)容 。 2.1 2.1 文件管理系
23、統(tǒng)結(jié)構(gòu)文件管理系統(tǒng)結(jié)構(gòu) 1 文件系統(tǒng)主要功能文件系統(tǒng)主要功能 在所有操作系統(tǒng)中,文件系統(tǒng)的功能集中起來講就是:按名存取。在所有操作系統(tǒng)中,文件系統(tǒng)的功能集中起來講就是:按名存取。 在在UNIX系統(tǒng)中,文件系統(tǒng)對外表現(xiàn)的功能為:系統(tǒng)中,文件系統(tǒng)對外表現(xiàn)的功能為: 1)將用戶的程序或數(shù)據(jù)按文件名方式存放在某種存儲介質(zhì)上)將用戶的程序或數(shù)據(jù)按文件名方式存放在某種存儲介質(zhì)上 2)能完成快速方便的透明存取。)能完成快速方便的透明存取。 透明存?。和该鞔嫒。褐傅氖钱斢脩魧ξ募蚰夸涍M行訪問或處理時,不指的是當用戶對文件或目錄進行訪問或處理時,不 需要了解文件到底以何種組織方式存放在哪個具體的物理結(jié)構(gòu)上,需
24、要了解文件到底以何種組織方式存放在哪個具體的物理結(jié)構(gòu)上, 用戶只需要給出文件名和該文件所在的路徑就可以快速方便地完成用戶只需要給出文件名和該文件所在的路徑就可以快速方便地完成 文件的訪問和執(zhí)行。所有對文件的內(nèi)部操作,如對存儲空間的管理,文件的訪問和執(zhí)行。所有對文件的內(nèi)部操作,如對存儲空間的管理, 文件查找,存儲介質(zhì)的讀寫都要由系統(tǒng)的文件管理系統(tǒng)自動來完成。文件查找,存儲介質(zhì)的讀寫都要由系統(tǒng)的文件管理系統(tǒng)自動來完成。 2.1 2.1 文件管理系統(tǒng)結(jié)構(gòu)文件管理系統(tǒng)結(jié)構(gòu) 文件管理系統(tǒng)需要完成以下幾個部分:文件管理系統(tǒng)需要完成以下幾個部分: 1)對磁盤和其他存儲器(如光盤,對磁盤和其他存儲器(如光盤,
25、USB存儲盤等)的空間進行統(tǒng)一的管理。存儲盤等)的空間進行統(tǒng)一的管理。 這個工作包括實現(xiàn)當用戶創(chuàng)建文件時分配空閑區(qū),用戶刪除文件時要回收存儲這個工作包括實現(xiàn)當用戶創(chuàng)建文件時分配空閑區(qū),用戶刪除文件時要回收存儲 空間,當用戶修改文件時對存儲空間進行調(diào)整??臻g,當用戶修改文件時對存儲空間進行調(diào)整。 2)完成文件的按名存取管理。完成文件的按名存取管理。通過制定一些用戶容易理解和識別的,獨立于通過制定一些用戶容易理解和識別的,獨立于 物理存儲介質(zhì)的文件邏輯結(jié)構(gòu),如堆文件,順序文件、索引文件等邏輯結(jié)構(gòu)。物理存儲介質(zhì)的文件邏輯結(jié)構(gòu),如堆文件,順序文件、索引文件等邏輯結(jié)構(gòu)。 讓用戶使用這種邏輯結(jié)構(gòu)完成他需要
26、的數(shù)據(jù)信息加工和存取。讓用戶使用這種邏輯結(jié)構(gòu)完成他需要的數(shù)據(jù)信息加工和存取。 3)制定一個科學的,合理的文件存放結(jié)構(gòu)。制定一個科學的,合理的文件存放結(jié)構(gòu)。這說的是文件數(shù)據(jù)在物理設(shè)備上這說的是文件數(shù)據(jù)在物理設(shè)備上 的存放結(jié)構(gòu),和文件的邏輯結(jié)構(gòu)無關(guān)。這種文件存放結(jié)構(gòu)必須便于文件系統(tǒng)對的存放結(jié)構(gòu),和文件的邏輯結(jié)構(gòu)無關(guān)。這種文件存放結(jié)構(gòu)必須便于文件系統(tǒng)對 存放在物理存儲介質(zhì)上的文件進行存取操作。存放在物理存儲介質(zhì)上的文件進行存取操作。 4)完成物理存儲設(shè)備上文件的查找,讀、寫等操作完成物理存儲設(shè)備上文件的查找,讀、寫等操作 5)提供文件共享和文件保護的功能提供文件共享和文件保護的功能 堆文件堆文件 順
27、序文件順序文件 索引順序文件索引順序文件 索引文件索引文件 散列文件散列文件 邏輯輸入邏輯輸入/輸出管理層輸出管理層 基本輸入基本輸入/輸出管理層輸出管理層 基本文件系統(tǒng)基本文件系統(tǒng) 字符設(shè)備驅(qū)動字符設(shè)備驅(qū)動 塊設(shè)備驅(qū)動塊設(shè)備驅(qū)動 頂層頂層 二層二層 三層三層 四層四層 五層五層 第五層第五層 設(shè)備驅(qū)動程序,它直接與外部設(shè)備進行通訊,該層控制設(shè)備驅(qū)動程序,它直接與外部設(shè)備進行通訊,該層控制I/O設(shè)備的操設(shè)備的操 作,完成作,完成I/O的各種請求任務(wù)。的各種請求任務(wù)。 第四層第四層 基本文件系統(tǒng)基本文件系統(tǒng) 主要完成主存和輔助存儲器的管理主要完成主存和輔助存儲器的管理 第三層第三層 基本輸入輸出
28、管理層基本輸入輸出管理層 完成對文件的輸入輸出控制完成對文件的輸入輸出控制 第二層第二層 邏輯輸入邏輯輸入/輸出管理層,輸出管理層, 完成從文件到文件記錄的訪問的管理。完成從文件到文件記錄的訪問的管理。 第一層是文件的邏輯結(jié)構(gòu),它是用戶可見的層次,描述了文件系統(tǒng)中可以第一層是文件的邏輯結(jié)構(gòu),它是用戶可見的層次,描述了文件系統(tǒng)中可以 支持的文件組織方式。支持的文件組織方式。 2 文件系統(tǒng)體系結(jié)構(gòu)文件系統(tǒng)體系結(jié)構(gòu) 2.2 2.2 文件系統(tǒng)的維護文件系統(tǒng)的維護 1 文件系統(tǒng)中與維護有關(guān)的特殊目錄和特殊文件文件系統(tǒng)中與維護有關(guān)的特殊目錄和特殊文件 在在UNIX系統(tǒng)中,有些目錄是具有特殊意義的,它們的安
29、裝位置和安裝內(nèi)系統(tǒng)中,有些目錄是具有特殊意義的,它們的安裝位置和安裝內(nèi) 容是相對固定的,就象容是相對固定的,就象windows系統(tǒng)的系統(tǒng)目錄通常設(shè)置為系統(tǒng)的系統(tǒng)目錄通常設(shè)置為c:windows一樣。一樣。 這些目錄的不允許普通用戶進行修改。這些目錄的不允許普通用戶進行修改。 一般來說,在一般來說,在UNIX系統(tǒng)的安裝過程中,系統(tǒng)將會把常用的目錄自動建立系統(tǒng)的安裝過程中,系統(tǒng)將會把常用的目錄自動建立 起來。在絕大部分的起來。在絕大部分的UNIX系統(tǒng)中,都包括如下一些特殊的目錄:系統(tǒng)中,都包括如下一些特殊的目錄: 2.2 2.2 文件系統(tǒng)的維護文件系統(tǒng)的維護 / / etcusrsbindevho
30、mebin libsbinbinuser1user2 prog.cls.txt /bin, /usr/bin 用戶命令目錄用戶命令目錄,存放普通用戶存放普通用戶 可以使用可以使用的的命令命令如如sh,tar,bc,tail等等 /sbin, /usr/sbin 系統(tǒng)命令目系統(tǒng)命令目 錄,存放系統(tǒng)啟動,關(guān)閉,網(wǎng)絡(luò)管錄,存放系統(tǒng)啟動,關(guān)閉,網(wǎng)絡(luò)管 理等命令理等命令 /usr/lib 存放用戶使用的程序存放用戶使用的程序 庫(比如庫(比如C,pascal的函數(shù)庫)和的函數(shù)庫)和 系統(tǒng)使用的信息庫文件系統(tǒng)使用的信息庫文件 /home 用戶用戶的的注冊目錄注冊目錄,通常用戶通常用戶 的的數(shù)據(jù)數(shù)據(jù)就就保存
31、保存在該在該目錄目錄下下 /dev 邏輯設(shè)備目錄,存放設(shè)備邏輯設(shè)備目錄,存放設(shè)備 驅(qū)動文件驅(qū)動文件,如如hda1,cdrom等等等等 2.2 2.2 文件系統(tǒng)的維護文件系統(tǒng)的維護 2 文件系統(tǒng)的安裝和卸載文件系統(tǒng)的安裝和卸載 UNIX系統(tǒng)的文件系統(tǒng)是通過安裝和卸載進行維護的。系統(tǒng)的文件系統(tǒng)是通過安裝和卸載進行維護的。 我們可以使用命令我們可以使用命令mount來將一個文件系統(tǒng)來將一個文件系統(tǒng) 安裝到一個目錄上,也安裝到一個目錄上,也 可以用可以用umount命令來將一個文件系統(tǒng)卸載下來。命令來將一個文件系統(tǒng)卸載下來。 mount 命令的常用格式命令的常用格式 mount -ht filesys
32、tem mountpoint filesystem 是文件系統(tǒng)名稱,通常是磁盤或磁盤分區(qū)的名稱。是文件系統(tǒng)名稱,通常是磁盤或磁盤分區(qū)的名稱。 mountpoint 是安裝點的描述信息,它說明將該文件系統(tǒng)安裝到哪個是安裝點的描述信息,它說明將該文件系統(tǒng)安裝到哪個 目錄上,需要使用全路徑名,而且該目錄必須已經(jīng)存在。目錄上,需要使用全路徑名,而且該目錄必須已經(jīng)存在。 在使用在使用mount命令將一個文件系統(tǒng)安裝到某個目錄后,如果該目錄命令將一個文件系統(tǒng)安裝到某個目錄后,如果該目錄 中原來有內(nèi)容存在,則該部分內(nèi)容將被屏蔽掉,直到文件系統(tǒng)被卸中原來有內(nèi)容存在,則該部分內(nèi)容將被屏蔽掉,直到文件系統(tǒng)被卸 載
33、后才能再次使用。載后才能再次使用。 -t 指定一個文件系統(tǒng)的類型指定一個文件系統(tǒng)的類型 2.2 2.2 文件系統(tǒng)的維護文件系統(tǒng)的維護 下面用例子來說明下面用例子來說明 $mount t msdos /dev/fd0 /mnt/floppy 將將dos格式的軟磁盤文件系統(tǒng)安裝到格式的軟磁盤文件系統(tǒng)安裝到/mnt/floppy目錄下目錄下 umount 命令的使用命令的使用 umount 命令是用來將上次命令是用來將上次mount上去的文件系統(tǒng)卸載下來,使用的上去的文件系統(tǒng)卸載下來,使用的 格式如下:格式如下: umount option filesystem $ umount /dev/fd0
34、umount 命令可以將暫時不用的文件系統(tǒng)從命令可以將暫時不用的文件系統(tǒng)從UNIX的文件系統(tǒng)管理中的文件系統(tǒng)管理中 卸載下來,這種裁剪方式使得卸載下來,這種裁剪方式使得UNIX的文件系統(tǒng)管理比較靈活。的文件系統(tǒng)管理比較靈活。 2.3 2.3 物理卷和邏輯卷物理卷和邏輯卷 1物理卷和物理分區(qū)物理卷和物理分區(qū) 物理卷(物理卷(physical volume)是指的一個獨立的硬盤。每個物理卷在系統(tǒng)中)是指的一個獨立的硬盤。每個物理卷在系統(tǒng)中 占有唯一的邏輯名稱,這些名稱的描述存放在占有唯一的邏輯名稱,這些名稱的描述存放在/dev目錄下,比如:目錄下,比如: /dev/hdisk0 系統(tǒng)中的第一個硬盤
35、系統(tǒng)中的第一個硬盤 /dev/hdisk1 系統(tǒng)中的第二個硬盤系統(tǒng)中的第二個硬盤 在物理卷中可以分出大小一致的物理分區(qū)(在物理卷中可以分出大小一致的物理分區(qū)(Physical Partition),也稱為磁),也稱為磁 盤塊或者分頁,容量可以在盤塊或者分頁,容量可以在512字節(jié)到字節(jié)到4k字節(jié)之間的任意。字節(jié)之間的任意。 2 邏輯卷:一個文件系統(tǒng)稱為一個邏輯卷邏輯卷:一個文件系統(tǒng)稱為一個邏輯卷 3 卷組:一個或多個物理卷為卷組卷組:一個或多個物理卷為卷組 2.4 2.4 文件系統(tǒng)存儲結(jié)構(gòu)文件系統(tǒng)存儲結(jié)構(gòu) 1 組成:組成: 1)引導塊引導信息;)引導塊引導信息; 2)超級塊文件和目錄在磁盤上靜態(tài)
36、分布的描述信息(文件系統(tǒng)的狀)超級塊文件和目錄在磁盤上靜態(tài)分布的描述信息(文件系統(tǒng)的狀 態(tài)、索引節(jié)點信息、存儲塊信息);態(tài)、索引節(jié)點信息、存儲塊信息); 3)索引節(jié)點表文件描述信息數(shù)據(jù)結(jié)構(gòu);)索引節(jié)點表文件描述信息數(shù)據(jù)結(jié)構(gòu); 4)數(shù)據(jù)區(qū)文件數(shù)據(jù)、目錄文件數(shù)據(jù)、空閑塊信息)數(shù)據(jù)區(qū)文件數(shù)據(jù)、目錄文件數(shù)據(jù)、空閑塊信息 2.4 2.4 文件系統(tǒng)存儲結(jié)構(gòu)文件系統(tǒng)存儲結(jié)構(gòu) 2 重要的數(shù)據(jù)結(jié)構(gòu)重要的數(shù)據(jù)結(jié)構(gòu) 在一般的操作系統(tǒng)(如在一般的操作系統(tǒng)(如DOS、Windows系統(tǒng))中,將目錄文件設(shè)計成為系統(tǒng))中,將目錄文件設(shè)計成為 文件的索引信息表,包括了文件的許多屬性信息。文件的索引信息表,包括了文件的許多屬性
37、信息。 目錄文件的數(shù)據(jù)結(jié)構(gòu):目錄文件的數(shù)據(jù)結(jié)構(gòu): 文件名文件名文件長度文件長度修改日期修改日期 UNIX系統(tǒng)中,分為目錄文件、索引節(jié)點表兩個數(shù)據(jù)結(jié)構(gòu)系統(tǒng)中,分為目錄文件、索引節(jié)點表兩個數(shù)據(jù)結(jié)構(gòu) 文件名文件名索引節(jié)點號索引節(jié)點號文件長度文件長度修改日期修改日期其他信息其他信息 目錄文件數(shù)據(jù)結(jié)構(gòu)目錄文件數(shù)據(jù)結(jié)構(gòu) 索引節(jié)點表索引節(jié)點表 優(yōu)勢:優(yōu)勢: 由于文件管理中目錄的檢索是系統(tǒng)最頻繁的處理工作,因此由于文件管理中目錄的檢索是系統(tǒng)最頻繁的處理工作,因此UNXI系統(tǒng)系統(tǒng) 采用最簡單和最簡潔的目錄文件格式無疑會大大提高對目錄檢索的速度。采用最簡單和最簡潔的目錄文件格式無疑會大大提高對目錄檢索的速度。 大
38、大提高用戶使用文件系統(tǒng)的效率。大大提高用戶使用文件系統(tǒng)的效率。 3 UNIX3 UNIX文件系統(tǒng)動態(tài)管理文件系統(tǒng)動態(tài)管理 以上用于文件存儲的數(shù)據(jù)結(jié)構(gòu)描述了文件的靜態(tài)信息,除此之外,還以上用于文件存儲的數(shù)據(jù)結(jié)構(gòu)描述了文件的靜態(tài)信息,除此之外,還 有一些輔助的數(shù)據(jù)信息,以便系統(tǒng)進行動態(tài)管理和提高系統(tǒng)的運行效率。有一些輔助的數(shù)據(jù)信息,以便系統(tǒng)進行動態(tài)管理和提高系統(tǒng)的運行效率。 UNIX文件系統(tǒng)設(shè)立的動態(tài)數(shù)據(jù)結(jié)構(gòu)有:文件系統(tǒng)設(shè)立的動態(tài)數(shù)據(jù)結(jié)構(gòu)有: (1)內(nèi)存超級塊)內(nèi)存超級塊 在內(nèi)存中給每個已被加載的文件系統(tǒng)的超級塊劃出一個特定的內(nèi)存超級在內(nèi)存中給每個已被加載的文件系統(tǒng)的超級塊劃出一個特定的內(nèi)存超級
39、塊。塊。 (2)活動索引節(jié)點表)活動索引節(jié)點表 將被訪問文件在磁盤中的索引節(jié)點復制到內(nèi)存,內(nèi)存中這部分信息保存將被訪問文件在磁盤中的索引節(jié)點復制到內(nèi)存,內(nèi)存中這部分信息保存 著當前所有活動文件的索引節(jié)點表。著當前所有活動文件的索引節(jié)點表。 (3)用戶打開文件表)用戶打開文件表 記錄并控制用戶或進程打開文件個數(shù)及使用共享文件的情況。記錄并控制用戶或進程打開文件個數(shù)及使用共享文件的情況。 (4)系統(tǒng)打開表)系統(tǒng)打開表 整個系統(tǒng)中打開文件的情況。整個系統(tǒng)中打開文件的情況。 (5)安裝表)安裝表 記錄系統(tǒng)中各個文件卷的安裝情況。記錄系統(tǒng)中各個文件卷的安裝情況。 3 UNIX3 UNIX文件系統(tǒng)動態(tài)管理
40、文件系統(tǒng)動態(tài)管理 舉例:一個進程打開兩個文件的內(nèi)核數(shù)據(jù)結(jié)構(gòu)舉例:一個進程打開兩個文件的內(nèi)核數(shù)據(jù)結(jié)構(gòu) 用戶打開文件表用戶打開文件表 文件描述符文件描述符ptr 文件描述符文件描述符ptr Fd0: Fd1: Fd2: 進程表項進程表項 系統(tǒng)打開文件表系統(tǒng)打開文件表 打開文件表項打開文件表項 文件標識文件標識 當前文件位置當前文件位置 i節(jié)點指針節(jié)點指針 打開文件表項打開文件表項 文件標識文件標識 當前文件位置當前文件位置 i節(jié)點指針節(jié)點指針 活動索引節(jié)點表活動索引節(jié)點表 i節(jié)點號節(jié)點號 屬性信息屬性信息 i節(jié)點號節(jié)點號 屬性信息屬性信息 4 UNIX4 UNIX文件系統(tǒng)訪問文件系統(tǒng)訪問 任何一種
41、操作系統(tǒng)中,程序在開始讀寫一個文件的內(nèi)容之前,必任何一種操作系統(tǒng)中,程序在開始讀寫一個文件的內(nèi)容之前,必 須首先在程序與文件之間建立連接或通信通道,這一過程稱為打開須首先在程序與文件之間建立連接或通信通道,這一過程稱為打開 文件。打開一個文件的目的可以是為了讀或者為了寫,也可以是即文件。打開一個文件的目的可以是為了讀或者為了寫,也可以是即 讀又寫。讀又寫。 UNIX系統(tǒng)中有兩種機制用于描述程序與文件的這種連接:系統(tǒng)中有兩種機制用于描述程序與文件的這種連接: (1)文件描述符)文件描述符 (2)流)流 4 UNIX4 UNIX文件系統(tǒng)訪問文件系統(tǒng)訪問 1. 都是用來表示用戶程序與被操作的文件之間
42、的連都是用來表示用戶程序與被操作的文件之間的連 接,并在此連接的接,并在此連接的 基礎(chǔ)上對文件進行讀寫等訪問。基礎(chǔ)上對文件進行讀寫等訪問。 文件描述符文件描述符 和和 流:流:相同點:相同點: 2. 都能表示與普通文件,與設(shè)備(如終端),與管道都能表示與普通文件,與設(shè)備(如終端),與管道 或者套接字的連接,用戶打開一個文件,要么返回文或者套接字的連接,用戶打開一個文件,要么返回文 件描述符,要么返回一個流。件描述符,要么返回一個流。 3. 都包含了一大類的都包含了一大類的I/O庫函數(shù)庫函數(shù) 4 UNIX4 UNIX文件系統(tǒng)訪問文件系統(tǒng)訪問 文件描述符表示為文件描述符表示為int類型的對象。例如
43、標準輸入對應(yīng)文件描述符類型的對象。例如標準輸入對應(yīng)文件描述符0, 標準輸出對應(yīng)文件描述符標準輸出對應(yīng)文件描述符1。 而流則表示為指向結(jié)構(gòu)而流則表示為指向結(jié)構(gòu)FILE的指針的指針FILE* ,因此流也稱為,因此流也稱為“文件指針文件指針” 文件描述符文件描述符 和和 流:流:不同點:不同點: 如果需要對特定設(shè)備進行控制操作,必須使用文件描述符方式,沒如果需要對特定設(shè)備進行控制操作,必須使用文件描述符方式,沒 有函數(shù)能對流進行這類操作。有函數(shù)能對流進行這類操作。 如果需要按照特殊的方式進行如果需要按照特殊的方式進行I/O操作(例如非阻塞的方式),必操作(例如非阻塞的方式),必 須使用文件描述符方式
44、,也沒有函數(shù)能對流進行這類操作。須使用文件描述符方式,也沒有函數(shù)能對流進行這類操作。 4 UNIX4 UNIX文件系統(tǒng)訪問文件系統(tǒng)訪問 流給用戶程序提供了更高一級的流給用戶程序提供了更高一級的(功能更強大,使用更簡化功能更強大,使用更簡化)的的I/O接接 口,它處在文件描述符方式的上層,也就是說,流函數(shù)是通過文件口,它處在文件描述符方式的上層,也就是說,流函數(shù)是通過文件 描述符函數(shù)來實現(xiàn)的。描述符函數(shù)來實現(xiàn)的。 文件描述符文件描述符 和和 流的關(guān)系流的關(guān)系: 4 UNIX4 UNIX文件系統(tǒng)訪問文件系統(tǒng)訪問 執(zhí)行實際輸入輸出操作的流函數(shù)集合比文件描述符函數(shù)要豐富很多,執(zhí)行實際輸入輸出操作的流函
45、數(shù)集合比文件描述符函數(shù)要豐富很多, 而功能也靈活,強大不少。而功能也靈活,強大不少。 流流 相對于相對于 文件描述符文件描述符 的的 優(yōu)點優(yōu)點: 流函數(shù)有利于程序的移植,任何基于流函數(shù)有利于程序的移植,任何基于ANSI C的系統(tǒng)都支持流,文的系統(tǒng)都支持流,文 件描述符的支持則較弱件描述符的支持則較弱 文件描述符函數(shù)只提供簡文件描述符函數(shù)只提供簡 單的傳送字符塊的函數(shù)單的傳送字符塊的函數(shù) 流函數(shù)提供格式化流函數(shù)提供格式化I/O,字符,字符 I/O,面向行的面向行的I/O等大量函數(shù)等大量函數(shù) 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (1) 文件描述符文件描述符 (2)文件創(chuàng)建和文件鏈接文件
46、創(chuàng)建和文件鏈接 (3)文件的打開和關(guān)閉文件的打開和關(guān)閉 (4)文件的讀和寫文件的讀和寫 (5 5)文件隨機存?。┪募S機存取 (6 6)文件記錄鎖定)文件記錄鎖定 (7 7)重復描述字)重復描述字 (8 8)文件控制)文件控制 (9 9)非阻塞)非阻塞I/OI/O 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (1)文件描述符)文件描述符 在進行輸入輸出系統(tǒng)調(diào)用時,可用一個整數(shù)代表正在打開的文在進行輸入輸出系統(tǒng)調(diào)用時,可用一個整數(shù)代表正在打開的文 件,稱為文件描述符,文件描述符與文件之間有一一對應(yīng)的關(guān)系,件,稱為文件描述符,文件描述符與文件之間有一一對應(yīng)的關(guān)系, 可通過它進行文件的操作。進行
47、文件讀寫時,系統(tǒng)會自動打開三個可通過它進行文件的操作。進行文件讀寫時,系統(tǒng)會自動打開三個 標準文件描述符是標準文件描述符是0、1、2,代表標準輸入流、標準輸出流,標準,代表標準輸入流、標準輸出流,標準 錯誤流。可直接進行使用,建立新文件時,不要混亂使用已有的文錯誤流??芍苯舆M行使用,建立新文件時,不要混亂使用已有的文 件描述符。件描述符。 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (2)文件創(chuàng)建和文件鏈接文件創(chuàng)建和文件鏈接 (1)fdcreat(name,pmode) fd=3 出錯為出錯為1 fd=creat(“abc”,0777) (2) status=link(name1,name
48、2) 建立文件之間的連接建立文件之間的連接 (3) status=unlink(name) 刪除連接刪除連接 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (3)文件的打開文件的打開 # include # include # include int open(const char* filename,int flags,mode_t mode); filename:指明要打開或創(chuàng)建的文件路徑名;指明要打開或創(chuàng)建的文件路徑名; flag:指明打開文件采取的動作;:指明打開文件采取的動作; 取值:取值:O_RDONLY(為只讀而打開文件為只讀而打開文件) ,O_WRONLY,O_RDWR,O_
49、APPEND(文件位置文件位置 移至文件尾,所有移至文件尾,所有write操作寫數(shù)據(jù)至文件尾部)操作寫數(shù)據(jù)至文件尾部) mode:指打開文件所限定的許可機制:指打開文件所限定的許可機制 open的正常返回值是一個非負整數(shù)(的正常返回值是一個非負整數(shù)(=3),即文件描述符,即文件描述符 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (3)文件的關(guān)閉文件的關(guān)閉 # include int close (int filedes); 關(guān)閉文件有下述一系列動作:關(guān)閉文件有下述一系列動作: 1.釋放文件描述字釋放文件描述字filedes,此描述字可被進程后繼調(diào)用的,此描述字可被進程后繼調(diào)用的open返回
50、而再次使用。返回而再次使用。 2.釋放進程在此文件上所占有的任何記錄鎖。釋放進程在此文件上所占有的任何記錄鎖。 3.當與管道或當與管道或FIFO相聯(lián)的所有文件描述字均被關(guān)閉時,任何還在管道或相聯(lián)的所有文件描述字均被關(guān)閉時,任何還在管道或FIFO中的數(shù)據(jù)被中的數(shù)據(jù)被 釋放。釋放。 4. close的正常還回值是的正常還回值是0,出錯為,出錯為-1 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (4)文件的讀和寫文件的讀和寫 # include ssize_t read(int filedes,void* buffer,size_t nbytes); read函數(shù)從已打開的、與文件描述字函數(shù)從已
51、打開的、與文件描述字filedes相連的文件中讀至多相連的文件中讀至多nbytes個個 字節(jié)的數(shù)據(jù)放到字節(jié)的數(shù)據(jù)放到buffer所指緩沖區(qū)中所指緩沖區(qū)中 。它的正常返回值是實際讀入的字。它的正常返回值是實際讀入的字 節(jié)數(shù);如在實際讀入字節(jié)之前便遇到文件尾,返回值為節(jié)數(shù);如在實際讀入字節(jié)之前便遇到文件尾,返回值為0;出錯的情況下,;出錯的情況下, 返回值為返回值為-1,并設(shè)置,并設(shè)置errno錯誤條件。錯誤條件。 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (4)文件的讀和寫文件的讀和寫 # include ssize_t write(int filedes,const void* buff
52、er,size_t nbytes); write函數(shù)從函數(shù)從buffer寫前寫前nbytes個字節(jié)到與描述字個字節(jié)到與描述字filedes相連的文件。相連的文件。 它的返回值是實際寫出的字節(jié)數(shù),正常情況下它它的返回值是實際寫出的字節(jié)數(shù),正常情況下它=nbytes. 出錯的情況下,返回值為出錯的情況下,返回值為-1,并置,并置errno錯誤條件。錯誤條件。 4.1 4.1 低級輸入低級輸入/ /輸出輸出 示例示例1: 當輸入下列命令時當輸入下列命令時 $cp file1 file2 表示將文件表示將文件file1拷貝成拷貝成file2. main(argc,argv) int argc; cha
53、r *argv; int fd1,fd2,n; char buf512,ch=n; f(argc0) /*完成文件的拷貝過程完成文件的拷貝過程*/ write(fd2,buf,n); close(fd1); /*文件使用完畢要進行關(guān)閉文件使用完畢要進行關(guān)閉*/ close(fd2); 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (5 5)文件隨機存?。┪募S機存取 # include # include off_t lseek(int filedes,off_t offset,int origin); long int tell(int fd) lseek函數(shù):函數(shù):filedes 已打開
54、的文件描述字已打開的文件描述字 offset 指明從指定位置開始的位移量指明從指定位置開始的位移量 origin 確定文件指針新位置的基準點。確定文件指針新位置的基準點。 取值可為取值可為SEEK_SET、 SEEK_CUR、SEEK_END。 lseek返回文件指針新位置相對文件開始的字節(jié)數(shù)。出錯返回返回文件指針新位置相對文件開始的字節(jié)數(shù)。出錯返回-1并并 設(shè)置設(shè)置errno。 tell函數(shù):函數(shù): 報告當前文件的指針位置報告當前文件的指針位置 4.1 4.1 低級輸入低級輸入/ /輸出輸出 示例示例2 2:下面用一個例子說明動態(tài)修改文件指針系統(tǒng)調(diào)用的方法:下面用一個例子說明動態(tài)修改文件指針
55、系統(tǒng)調(diào)用的方法 # #includestdioinclude.h #includeunistd#include.h char buf1=“the is test text”;char buf1=“the is test text”; char buf2=“12345”;char buf2=“12345”; main()main() int int fid;fid; if(fid=creat if(fid=creat(“Test”,0644)0) /(“Test”,0644)0) /* *創(chuàng)建一個文件創(chuàng)建一個文件* */ / printf(“creat printf(“creat file er
56、rorn”); file errorn”); exit(1); exit(1); else else if(write(fid,buf1,16)=-1) / if(write(fid,buf1,16)=-1) /* *向創(chuàng)建的文件中寫信息,寫入的信息是向創(chuàng)建的文件中寫信息,寫入的信息是 buf1 buf1中的隨機值中的隨機值* */ / printf printf(“buf1 write errorn”);(“buf1 write errorn”); exit(1); exit(1); 4.1 4.1 低級輸入低級輸入/ /輸出輸出 pose=tell(fid); / pose=tell(fi
57、d); /* *查詢寫操作后文件的指針位置查詢寫操作后文件的指針位置* */ / printf(“file postis printf(“file postis_1:%d”,post);_1:%d”,post); / /* *offset now=16offset now=16* */ / if(lseek if(lseek(fid,30,0)=-1) /(fid,30,0)=-1) /* *強行改變指針位置強行改變指針位置* */ / printf(“l(fā)seek printf(“l(fā)seek errorn”); errorn”); exit(2); exit(2); if(write(fid,
58、buf2,5)!=5) / if(write(fid,buf2,5)!=5) /* *再鍵入再鍵入5 5個字節(jié)個字節(jié)* */ / printf printf(“buf2 write errorn”);(“buf2 write errorn”); exit(3); exit(3); post=tell(fid); / post=tell(fid); /* *報告當前的文件指針位置報告當前的文件指針位置* */ / printf(“file postis printf(“file postis_2:%d”,post”);_2:%d”,post”); close(fid); close(fid);
59、exit(0); exit(0); 4.1 4.1 低級輸入低級輸入/ /輸出輸出 (6 6)文件記錄鎖定)文件記錄鎖定 # include # include int lockf(int filedes,int func,off_t size); filedes: 是將要鎖定記錄的文件描述符是將要鎖定記錄的文件描述符 size: 指將要鎖定的字節(jié)數(shù),從當前文件的指針位置算起指將要鎖定的字節(jié)數(shù),從當前文件的指針位置算起 func: 是規(guī)定進行鎖定的類型,其定義如下:是規(guī)定進行鎖定的類型,其定義如下: define F-uLock 0 /*開鎖開鎖*/ #define F-Lock 1 /*鎖定
60、,若鎖定了則進入睡眠鎖定,若鎖定了則進入睡眠*/ #define F-TLock 2 /*測試是否鎖定,若已鎖定返回測試是否鎖定,若已鎖定返回-1,若未鎖定則鎖定它,若未鎖定則鎖定它*/ #define F-TEST 3 /*測試是否鎖定,若已鎖定返回測試是否鎖定,若已鎖定返回-1,若未鎖定返回,若未鎖定返回0*/ 4.1 4.1 低級輸入低級輸入/ /輸出輸出 示例示例3:下面使用一個編程實例來說明記錄鎖定技術(shù)的使用方式,此程序的執(zhí)行中,:下面使用一個編程實例來說明記錄鎖定技術(shù)的使用方式,此程序的執(zhí)行中, 父子進程對同一文件進行記錄鎖定的操作。父子進程對同一文件進行記錄鎖定的操作。 #inc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年銷售經(jīng)理年終個人工作總結(jié)4篇
- 《采用合理的論證方法》課件 2024-2025學年統(tǒng)編版高中語文選擇性必修上冊
- 2025年春九年級物理下冊 第十七、十八章綜合測試卷(蘇科版)
- 石河子大學《文化遺產(chǎn)概論》2022-2023學年第一學期期末試卷
- 石河子大學《攝影》2022-2023學年第一學期期末試卷
- 石河子大學《機械原理》2022-2023學年第一學期期末試卷
- 沈陽理工大學《專題產(chǎn)品設(shè)計》2021-2022學年第一學期期末試卷
- 沈陽理工大學《線性控制系統(tǒng)》2022-2023學年期末試卷
- 沈陽理工大學《熱工與流體力學》2022-2023學年第一學期期末試卷
- 沈陽理工大學《計算機網(wǎng)絡(luò)技術(shù)基礎(chǔ)》2022-2023學年期末試卷
- 牙科治療中的藥物管理與用藥安全
- 幼小銜接研討會發(fā)言稿
- 商務(wù)星球版七年級上冊地理知識點歸納總結(jié)
- 四川創(chuàng)聯(lián)專業(yè)技術(shù)人員學習-2023數(shù)字經(jīng)濟驅(qū)動與發(fā)展公需科目答
- 【環(huán)氧樹脂復合材料研究進展文獻綜述6000字】
- 催審稿郵件怎么寫范文
- 2023《中華人民共和國合同法》
- 悅納自我向陽而生心理健康教育主題班會課件
- DIN-EN-ISO-2409-CN國際標準文檔
- 數(shù)字經(jīng)濟時代“95后”新生代員工管理挑戰(zhàn)、成因及對策分析
- 2023建設(shè)工程智慧消防系統(tǒng)技術(shù)規(guī)程
評論
0/150
提交評論