




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)課程設(shè)計學(xué) 院:信息科學(xué)與工程學(xué)院專 業(yè): 班 級: 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 2009 年 4 月 18 日一、 實驗內(nèi)容1、 題目:模擬UNIX(linux)文件系統(tǒng) 問題描述在任一OS下,建立一個大文件,把它假象成一張盤,在其中實現(xiàn)一個簡單的 模擬UNIX文件系統(tǒng) 。 二、 概要設(shè)計 在現(xiàn)有機器硬盤上開辟20M的硬盤空間(利用一個循環(huán)操作,在Disk中寫入20M的零,創(chuàng)建一個20M的文件即是),作為設(shè)定的硬盤空間??臻e盤塊棧(存放空閑盤塊)目錄區(qū) 各盤塊(每個占1KB)存放文件內(nèi)容,為程序設(shè)計方便,iNode節(jié)點也存放在此處。1kb(目錄快)30kB20480kb0kb(
2、超級塊信息)磁盤塊物理模型如下文件則是指具有文件名的若干相關(guān)元素的集合。文件屬性主要如下文件名:實現(xiàn)了按名存取,文件名和目錄文件允許重名。文件類型:可以從不同的角度來規(guī)定文件的類型。普通文件、管道文件、塊文件。文件長度:指文件的當前長度,長度的單位可以是KB。文件的物理位置:文件在磁盤中物理的存儲,并打印出來。此次UNIX文件系統(tǒng)最簡單的目錄結(jié)構(gòu)。整個文件系統(tǒng)中只建立一張目錄表,每個文件一個目錄項,目錄項含有文件相關(guān)信息。每建立一個新文件要先檢索所有的目錄項保證文件名唯一。然后找出一空白目錄項填入相關(guān)信息,并修改狀態(tài)位。刪除文件是找到對應(yīng)目錄項,回收所占用空間,清除該目錄。邏輯結(jié)構(gòu)如下文件名索
3、引節(jié)點編號文件名1INode文件名2INode文件名3INode.Unix文件系統(tǒng)當文件很多時,文件目錄要占用大量的盤塊。在查找目錄的過程中,可能需要多次啟動磁盤讀入目錄文件的盤塊。在檢索目錄文件中只用到了文件名,顯然,文件的物理地址等文件的描述信息在檢索目錄時不需調(diào)入內(nèi)存。為此,可以把文件名與文件描述信息分開。使文件描述信息單獨形成一個索引結(jié)點。把文件描述信息單獨形成一個稱為索引結(jié)點的數(shù)據(jù)結(jié)構(gòu),簡稱為inode;文件目錄中的每個目錄項,則僅由文件名及指向該文件所對應(yīng)的inode的指針所構(gòu)成。這樣,為找到一個文件的平均啟動磁盤的次數(shù)減少很多模型如下: RootFan.txtINode節(jié)點INo
4、de節(jié)點目錄節(jié)點節(jié)點AB 存儲空間的分配與回收成組鏈接法首先,建立操作系統(tǒng)課程的設(shè)計模型。這個系統(tǒng)將利用一個20M的文件作為自己的磁盤空間,設(shè)計時由于一個盤塊占用1KB,所以20M空間可以產(chǎn)生20480個盤塊系統(tǒng)本身將0# - 30#塊作為系統(tǒng)區(qū),所以用戶區(qū)便剩下20450個盤塊,每50個盤塊為一組,一共可以分為409個組。將每一組含有的盤塊總數(shù)N和該組的盤塊號,記入其前一組的第一個盤塊的S.free(1)S.free(50)。這樣由各組的第一個盤塊形成了一條鏈。將第一組的盤塊總數(shù)和所有的盤塊號,記入空閑盤塊號棧中,作為當前可供分配的空閑盤塊號。最末一組只有49個盤塊,其盤塊號分別記入其前一組
5、的S.free(1)S.free(99)中,而在S.free(0)中則存放0,作為空閑盤塊鏈的結(jié)束標志?;竟δ?1、初始化 2、建立文件 3、建立子目錄 4、打開文件 5、刪除文件 6、刪除目錄 7、顯示目錄三、 詳細設(shè)計和編碼 正規(guī)文件 i 結(jié)點文件類型 目錄文件 (共1byte) 塊設(shè)備 管道文件 。物理地址(索引表) 共有13個表項,每表項2byte 。文件長度 4byte 。聯(lián)結(jié)計數(shù) 1bytestruct INodeFileSpec fileSpec;short iaddr13;int fileLength;int linkCount; 文件名 14byte(5)目錄項信息 i 結(jié)
6、點號 2bytestruct DirChild char filename14; short i_BNum ;struct DirNodeDirChild childItem64;shortDirCount;定義磁盤文件名const char FileName=os.txt;默認為空的文件名const char NullName=00;默認目錄文件的長度const int DirLen=1; 默認超級塊的快號const short SSNum=-1;/super block num定義枚舉類型,普通,目錄,塊文件,管道文件enum FileSpecNORMAL,DIR,BLOCK,PIP;/0
7、,1,2,3short SS51;/超級棧,指針為SS0,保存當前可用盤快short freeBlockNum=0;/當前可用盤快所在組記錄的盤快號short freeTotalB=20450;文件總長度short freeDirNode29;/可用索引節(jié)點棧short freeDirCount=30;/索引節(jié)點棧指針short currDirNum;/當前目錄所在的磁盤號short currINum;DirNode *currDir;/當前目錄節(jié)點INode*iNode; /當前iNode節(jié)點系統(tǒng)調(diào)用函數(shù)列表 系統(tǒng)調(diào)用原型功能入口、出口參數(shù)說明Void ArrarEqual(short ar
8、r51,short begin,short end)arr51數(shù)組賦值,在成組鏈接初始化時使用void BWrite(short arr51,short diskNum)往磁盤中寫入短數(shù)組void BWriteArr(short arr512,short diskNum )重構(gòu)BWrite,實現(xiàn)一個數(shù)組的寫入,數(shù)組長度不確定void BRead(INode *iNode,short diskNum)從磁盤中讀出iNode節(jié)點void BRead(short arr51,short diskNum)從磁盤中讀出數(shù)組void BReadArr(short arr512,short diskNum)
9、從磁盤中讀出數(shù)組,成組鏈接多級索引使用BWrite(DirNode *currDir,short diskNum)寫入一個目錄項Void BWrite(INode *iNode,short diskNum)寫入一個iNodeVoid AssAnEmpty()分配一個空閑的普通快short AssAnDir()分配一個空閑的目錄快short IsFileExist(DirNode *currDir,char fileName14)判斷一個文件是否存在-1不存在,否則返回文件所在磁盤號bool IsFile(INode *iNode,short diskNum)判斷一個文件是一個普通文件bool
10、IsDir(INode *iNode,short diskNum)判斷一個文件是一個索引文件void CreateINode(INode *iNode,FileSpec fileSpec,short linkCount,short length)創(chuàng)建一個iNode,并分配磁盤空間void CleanINode(INode *iNode)清空iNode信息,并分配磁盤空間void InsertDir(DirNode *currDir,char fileName14,short blockNum)將當前目錄項插入到內(nèi)存中目錄項中void ShowFileInfo(INode *iNode,char
11、 fileName14)打開一個文件,顯示文件信息void ShowBlockInfo(INode *iNode)打開一個文件,顯示文件占用磁盤空間信息void DelDirItem(DirNode *currDir,char fileName14)刪除索引中一項void CallBackOne(short diskNum)回收一塊空余磁盤片void CallBackINode(short diskNum)回收文件的iNOde節(jié)點主要函數(shù)列表函數(shù)原型功能入口、出口參數(shù)說明Format創(chuàng)建20M磁盤void Init(DirNode *currDir,FileSpec fielSpec,char
12、 filename14,INode *iNode,short diskNum)初始化,創(chuàng)建個目錄節(jié)點并初始化超級棧Init()初始化索引棧void Linkdisk()成組鏈接初始化void InitCreate(DirNode *currDir,FileSpec fielSpec,char filename14,INode *iNode,short diskNum)創(chuàng)建一個文件節(jié)點,并分配INOde和磁盤空間void Create(DirNode *currDir,char fileName14,INode *iNode,short length,FileSpec fileSpec)存在文件
13、,并分配iNOde節(jié)點和磁盤空間void Mf(DirNode *currDir,char fileName14,INode *iNode,short length)創(chuàng)建一個文件void Md(DirNode *currDir,char fileName14,INode *iNode,short length)在當前目錄創(chuàng)建一個子目錄void Open(DirNode *currDir,char fileName14,INode *iNode)打開文件,顯示文件信息void Del(DirNode *currDir,char fileName14,INode *iNode)刪除一個文件void
14、 Rd(DirNode *currDir,char fileName14,INode *iNode)刪除一個目錄void Dir(DirNode *currDir,INode *iNode)顯示目錄項的內(nèi)容void exit(DirNode *currDir,INode *iNode)退出,并銷毀資源void AuthorMessage()打印版權(quán)信息void help()提示信息主框架開 始打印作者信息初始化磁盤合法性檢查輸入命令顯示:命令錯誤falseo有新建文件新建目錄打開文件刪除文件刪除目錄顯示目錄立退出初始化命令format 利用文件創(chuàng)建命令可在硬盤上創(chuàng)建一個名為Disk的20M的空
15、間,并將該磁盤空間整體假想成一個獨立硬盤,我們將在這張封閉的磁盤上進行各種關(guān)于文件的操作。Format 具體操作如下:(1) 利用一個循環(huán)操作,在Disk中寫入20M的零。(2) 然后將0#塊,即超級塊中寫入31# - 80#的盤塊號,并將全部可用剩余盤塊數(shù)FreeBlock=20450記錄在0#塊中。(3) 同時將80#,130#,180#(間距50)等408個(第409個組頭不存在下一組)盤組的組頭中寫入成組連接好的下一組盤塊號。2、系統(tǒng)初始化自動完成假如Disk已被格式化完畢,那么系統(tǒng)便將進行下一步,那就是初始化。初始化主要完成將根目錄項讀入內(nèi)存,便于文件操作,并將0#超級塊中保存的當前
16、可用盤塊號寫入內(nèi)存中的超級棧中,具體操作如下:(1) 初始化一個超級棧,將超級塊中保存的當前可分配盤塊號讀入棧中。(2) 定義一個全局變量FreeBlock,用來記錄當前全部可用的盤塊總數(shù)。3、建立文件mf filename如果終端發(fā)來的命令格式為mf filename,則可以判斷出這是建立文件的命令。要想成功建立一個文件,首先需要判斷在同級目錄下是否有重名的文件,并且需要判斷是否有足夠的空間允許建立一個指定長度的文件。mf(代表make file)具體操作如下: (1) 判斷所要建立的文件是否重名。首先將終端輸入的文件名filename在RootDir640進行檢索,看是否可以找到相同的名字
17、,假如找到了相同的名字還不能立刻判斷是重名了,因為同級目錄下允許文件夾與文件重名,然后利用DirItem結(jié)構(gòu)中的最后2個Byte要找到暫時重名文件的i結(jié)點,從i結(jié)點中讀出該文件的屬性,看是為正規(guī)文件還是文件夾。如果重名了,系統(tǒng)會提示,否則進行下一步。 (2) 如果不重名,則要根據(jù)用戶輸入的文件長度來判斷當前的剩余盤塊總數(shù)是否足夠分配,這項工作不僅僅是用終端輸入來的length與剩余盤塊總數(shù)FreeBlock比較,因為Unix本身采取混合索引方式,所以根據(jù)文件的長度會分配不同的索引盤塊數(shù)。所以判斷盤塊數(shù)是否足夠同時要計算出相應(yīng)的索引盤塊數(shù)。如果文件數(shù)據(jù)本身盤塊數(shù)加上相應(yīng)的索引盤塊數(shù)不會超過總剩余
18、盤塊數(shù),則可進行分配。開 始獲得文件名獲得文件長度合法性檢查返 回分配目錄項分配磁盤空間分配索引節(jié)點返 回4、建立子目錄md filename建立子目錄,即建立一個文件夾。其可以看作是建立文件的一個特殊情況,建立一個文件夾的過程和上述的建立文件非常相似,也要判斷重名,也要判斷是否盤塊數(shù)足夠分配,以及分配時所要考慮到的全部情況(文件夾利用0級索引)。 開 始獲得目錄名讀取目錄節(jié)點合法性檢查返 回創(chuàng)建iNode,分配索引節(jié)點分配磁盤空間分配目錄項返 回5、 打開文件open filename(顯示文件所占的盤塊)開 始檢查當前目錄目錄中有文件么?檢查iNode文件屬性與操作類型相符?打開文件:顯示
19、文件信息打印iNode中盤快信息顯示:“打開”成功返 回顯示:不存在該文件,打開失敗返 回顯示:文件類型不匹配返 回有無否是讀取iNode(a) 這個命令就是所謂的讀文件命令,在這個模擬Unix的系統(tǒng)中,我們將顯示文件所占的盤塊以及文件的相關(guān)信息。要打開文件,當然首先要判斷是否有這樣一個文件名,然后才是讀出全部的盤塊數(shù) 6、 刪除文件del filename開 始查該用目錄表currDircurrDir中有該文件?是顯示:文件已撤消檢查iNode返 回文件類型匹配?是否歸還文件所占的存儲區(qū)域在UFD中清除該文件登記欄在清除iNode信息,釋放磁盤節(jié)點返 回currDir中清除該文件的登記欄 刪
20、除文件同創(chuàng)建文件都是非常復(fù)雜的操作,要有多種情況需要考慮。要想成功刪除一個文件,首先需要判斷在同級目錄下是否有該文件名,然后在根據(jù)該文件為幾級索引文件進行相應(yīng)的回收 7、 刪除目錄rd filename就如同建立目錄好似建立文件的一種特殊情況,刪除目錄也和刪除文件差不多,但是有一點是絕對不同的,要特別注意。當子目錄下建立了文件或者文件夾時,即表示子目錄不為空,那么系統(tǒng)本身為了保持數(shù)據(jù)的完整性,是不對該目錄進行刪除操作的,而提示用戶該目錄不為空。除非用戶刪除了該目錄下的全部文件后,返回到根目錄,此時子目錄為空,才允許系統(tǒng)刪除該文件夾。刪除時的具體過程同刪除0級索引文件極為相似,這里就不作過多說明
21、。文件流程如刪除文件,此處不再贅述。8、 顯示目錄dir(即顯示目錄下的信息,包括文件、子目錄等)Dir是一個很容易實現(xiàn)的命令,在目錄下輸入此命令,即可以獲得目錄下的信息,包括文件、子目錄等。 開 始讀取當前目錄讀取iNode顯示完所有目錄顯示文件信息打印iNode中顯示:成功返 回否是 11、正常退出指令exit不要小看了這條指令,它可以幫你完成許多被你遺忘的操作,由于此次代碼編寫超過了3000行,而且涉及到大量的文件操作函數(shù),所以難免會對文件的關(guān)閉,棧的釋放等結(jié)束工作考慮不周全,為了提高數(shù)據(jù)的可靠性與完整性,建議退出系統(tǒng)時用此命令,它可以自動完成文件的關(guān)閉。程序源代碼#include #i
22、nclude #include using namespace std;const char FileName=os.txt;const char NullName=00;const int DirLen=1; const short SSNum=-1;/super block numenum FileSpecNORMAL,DIR,BLOCK,PIP;/0,1,2,3/i節(jié)點結(jié)構(gòu)信息struct INodeFileSpec fileSpec;short iaddr13;int fileLength;int linkCount;struct DirChild char filename14; s
23、hort i_BNum ;struct DirNodeDirChild childItem64;shortDirCount;short SS51;/超級棧,指針為SS0short freeBlockNum=0;/當前可用盤快所在組記錄的盤快號short freeTotalB=20450;short freeDirNode29;/可用索引節(jié)點棧short freeDirCount=30;/索引節(jié)點棧指針short currDirNum;/當前目錄所在的磁盤號short currINum;DirNode *currDir;INode*iNode; /=/函數(shù)描述:創(chuàng)建20M磁盤/入口參數(shù):無/返回
24、值:無/=void Format()cout系統(tǒng)正在初始化.endl;/ 打開文件FILE *f = fopen(FileName,w+);if (f = NULL)cout程序創(chuàng)建錯誤,請重新輸入endl;return ;for(int i=0;i;i+)/=20Mb,暫時2mb fprintf(f,%c,0);/ 關(guān)閉文件fclose(f);/=/函數(shù)描述:數(shù)組賦值/入口參數(shù):無/返回值:無/=void ArrarEqual(short arr51,short begin,short end)for(short i=0;iend-begin+1;i+)arr50-i=begin+i;/=/
25、函數(shù)描述:數(shù)組賦值/入口參數(shù):無/返回值:無/=/*void BWrite(short arr51,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤endl;fwrite(arr,sizeof(short),51,f);fclose(f);*/=/函數(shù)描述:重構(gòu)BWrite,實現(xiàn)一個數(shù)組的寫入/入口參數(shù):無/返回值:無/=void BWrite(short arr51,short dis
26、kNum )FILE *f = fopen(FileName, r+);if (f = NULL)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤endl;fwrite(arr,sizeof(short),51,f);fclose(f);/=/函數(shù)描述:重構(gòu)BWrite,實現(xiàn)一個數(shù)組的寫入,數(shù)組長度不確定/入口參數(shù):無/返回值:無/=void BWriteArr(short arr512,short diskNum )FILE *f = fopen(FileName, r+);if (f = NUL
27、L)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤endl;fwrite(arr,sizeof(short),512,f);fclose(f);/=/函數(shù)描述:重構(gòu)BWrite,實現(xiàn)一個數(shù)組的寫入/入口參數(shù):無/返回值:無/=void MyBWrite(short arr51,short diskNum )FILE *f = fopen(FileName, r+);if (f = NULL)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*di
28、skNum,0)cout文件指針錯誤endl;for(short i=0;i51;i+)fprintf(f,%d,arri);fclose(f);/=/函數(shù)描述:從磁盤中讀出數(shù)組/入口參數(shù):無/返回值:無/=void MyBRead(short arr51,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout讀文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤endl;for(short i=0;i51;i+)fscanf(f,%d,&arr
29、i);fclose(f);/=/函數(shù)描述:從磁盤中讀出iNode節(jié)點/入口參數(shù):無/返回值:無/=void BRead(INode *iNode,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤fileLength);int temp=int(fgetc(f);switch(temp)case 0:iNode-fileSpec=NORMAL;break;case 1:iNode-file
30、Spec=DIR;break;case 2:iNode-fileSpec=BLOCK;break;case 3:iNode-fileSpec=PIP;break;fread(iNode-iaddr,2,13,f);fscanf(f,%d,&iNode-linkCount);fclose(f);/=/函數(shù)描述:從磁盤中讀出數(shù)組/入口參數(shù):無/返回值:無/=void BRead(short arr51,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout讀文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fse
31、ek(f,1024*diskNum,0)cout文件指針錯誤endl;fread(arr,sizeof(short),51,f);fclose(f);/=/函數(shù)描述:從磁盤中讀出數(shù)組, 放入到iNOde中/入口參數(shù):無/返回值:無/=void BReadArr(short arr512,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout讀文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤endl;fread(arr,sizeof(short
32、),512,f);fclose(f);/=/函數(shù)描述:寫入一個目錄項/入口參數(shù):無/返回值:無/=void BWrite(DirNode *currDir,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,long(1024*diskNum),0)cout文件指針錯誤endl;for(int i=0;ichildItemi.i_BNum);fputs(currDir-childItemi.filename,f);fclose(f);/=/
33、函數(shù)描述:寫入一個iNode/入口參數(shù):無/返回值:無/=void BWrite(INode *iNode,short diskNum)FILE *f = fopen(FileName, r+);if (f = NULL)cout寫文件處錯誤,請重新輸入endl;return ;/設(shè)置文件指針if(fseek(f,1024*diskNum,0)cout文件指針錯誤fileLength);fputc(iNode-fileSpec,f);fwrite(iNode-iaddr,2,13,f);fprintf(f,%d,iNode-linkCount);fclose(f);/=/函數(shù)描述:分配一個空閑
34、的普通快/入口參數(shù):無/返回值:無/=short AssAnEmpty()short temp;if(SS01)SS0-;temp=SSSS0+1;/SSSS0+1=-1;freeTotalB-;/總剩余數(shù)-1return temp;elseif(SS1=0)cout盤片用盡endl;return -1;temp=freeBlockNum;freeBlockNum=SS1;BRead(SS,SS1);if(temp=0)SS0-;temp=SSSS0+1;/SSSS0+1=-1;freeTotalB-;return temp;/=/函數(shù)描述:分配一個空閑的目錄快/入口參數(shù):無/返回值:無/=s
35、hort AssAnDir()if(freeDirCount=0)cout無空余目錄節(jié)點endl;return -1;elsefreeDirCount-;short s=freeDirNodefreeDirCount;freeDirNodefreeDirCount=-1;return s;/可用索引節(jié)點棧/=/函數(shù)描述:創(chuàng)建一個文件節(jié)點,并分配INOde和磁盤空間/入口參數(shù):無/返回值:無/=void InitCreate(DirNode *currDir,FileSpec fielSpec,char filename14,INode *iNode,short diskNum)/int blo
36、ckNum=AssertAnEmpty();if(fielSpec=DIR)/init dirNode and write int blockNum=AssAnDir(); currDirNum=blockNum; for(int i=0;ichildItemi.filename,00); currDir-childItemi.i_BNum=-1; BWrite(currDir,blockNum);/*/init INode and write blockNum=AssertAnEmpty(); iNode-fileLength=DirLen; iNode-fileSpec=DIR; iNod
37、e-iaddr0=blockNum; iNode-linkCount=1; BWrite(iNode,distNum); /為文件分配磁盤空間*/end if(fileSpec=DIR)/=/函數(shù)描述:初始化/入口參數(shù):無/返回值:無/=void Init(DirNode *currDir,FileSpec fielSpec,char filename14,INode *iNode,short diskNum)InitCreate(currDir,fielSpec,filename,iNode,diskNum);BRead(SS,0);/=/函數(shù)描述:初始化索引棧/入口參數(shù):無/返回值:無/=
38、void Init()for(int i=0;i30;i+)freeDirNodei=30-i;/可用索引節(jié)點棧freeDirCount=30;/索引節(jié)點棧指針/=/函數(shù)描述:成組鏈接初始化/入口參數(shù):無/返回值:無/=void Linkdisk()/臨時空閑棧SS0=50;ArrarEqual(SS,31,80); BWrite(SS,0);for(short i=1;i408;i+)SS0=50;ArrarEqual(SS,i*50+31,i*50+80);BWrite(SS,i*50+30);BRead(SS,0);ArrarEqual(SS,408*50+31,408*50+79);S
39、S1=0;/49BWrite(SS,408*50+30);cout磁盤disk.txt完成創(chuàng)建,大小20MBendl;/=/函數(shù)描述:判斷一個文件是否存在/入口參數(shù):無/返回值:-1,不存在,文件號/=short IsFileExist(DirNode *currDir,char fileName14)for(int i=0;ichildItemi.filename)=0)return currDir-childItemi.i_BNum;return -1;/=/函數(shù)描述:判斷一個文件是一個普通文件/入口參數(shù):無/返回值:-1,不存在,文件號/=bool IsFile(INode *iNode,short d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 16 《大家排好隊》(教學(xué)設(shè)計)2024-2025學(xué)年統(tǒng)編版(2024)小學(xué)道德與法治一年級上冊
- 云南科技信息職業(yè)學(xué)院《文學(xué)作品與影視改編》2023-2024學(xué)年第二學(xué)期期末試卷
- 臨沂職業(yè)學(xué)院《交通大數(shù)據(jù)分析與處理》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南2025年河南省委黨校省直分校招聘博士研究生2人筆試歷年參考題庫附帶答案詳解
- 遼寧裝備制造職業(yè)技術(shù)學(xué)院《水質(zhì)監(jiān)測與實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 洛陽師范學(xué)院《運動技能學(xué)習(xí)與控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年度文化活動場地租賃合同規(guī)范文本
- 監(jiān)理機構(gòu)職責
- 小數(shù)的意義二(教學(xué)設(shè)計)-2023-2024學(xué)年四年級下冊數(shù)學(xué)北師大版
- 2025年度文化產(chǎn)業(yè)反擔保保證合同及文化產(chǎn)業(yè)發(fā)展規(guī)劃
- 《電力建設(shè)工程施工安全管理導(dǎo)則》(NB∕T 10096-2018)
- 2024-2025學(xué)年廣東省部分學(xué)校高一(上)第一次聯(lián)合考試物理試卷(含答案)
- 《黃色新聞的泛濫》課件
- 2024年山東省公務(wù)員考試《行測》真題及答案解析
- 化工原理Ⅱ?qū)W習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024-2025學(xué)年初中體育與健康九年級全一冊人教版(2024)教學(xué)設(shè)計合集
- 環(huán)保產(chǎn)業(yè)政策及市場發(fā)展趨勢分析研究
- 2024年河南省高考對口升學(xué)語文英語試題
- 學(xué)習(xí)白求恩精神,做一個高尚的人一個純潔的人
- 《中醫(yī)藥學(xué)概論》期末考試復(fù)習(xí)題庫(含答案)
- 2024年秋季新外研版三年級上冊英語課件 Unit 1 第1課時(Get ready)
評論
0/150
提交評論