作業系統模擬檔案管理大作業要點

2023-02-09 12:39:03 字數 3085 閱讀 4371

(1) 建立乙個簡單的模擬檔案管理系統。

(2) 理解使用者介面和操作命令在作業系統中的作用。

需要實現乙個命令列操作介面,包含如下命令:

1.建立檔案

功能:創立乙個指定名字的新檔案,即在目錄中增加一項,不考慮檔案內容,但必須能輸入檔案長度。

2.刪除檔案

功能:刪除指定的檔案

3.建立目錄

功能:在當前路徑下建立指定的目錄。

4.刪除目錄

功能:刪除當前目錄下的指定目錄,如果該目錄為空,則可刪除,否則應提示是否作刪除,刪除操作將該目錄下的全部檔案和子目錄都刪除。

5.改變目錄

功能:工作目錄轉移到指定的目錄下,只要求完成改變到當前目錄的某乙個子目錄下的功能,不要求實現相對目錄以及絕對目錄。

6.顯示目錄

功能:顯示全部目錄以及檔案,輸出時要求先輸出接近根的目錄,再輸出子目錄。

對於重名(建立時),檔案不存在(刪除時),目錄不存在(改變目錄時)等錯誤情況,程式應該作出相應處理並給出錯誤資訊。

介面的提示符為#,提示的命令以及除錯的方法應和前面的要求一致,可以自己設計更多的命令或者附加功能。

本實驗是在windows xp+vc 6.0環境下實現的,利用windows sdk 提供的系統介面(api)完成程式功能。在windows xp下安裝好vc後進行,vc是乙個整合開發環境,其中包含了windows sdk所有工具,所以就不用單獨在安裝sdk了,程式中所用的api是作業系統提供的用來進行應用程式設計的系統功能介面。

要使用這些api,需要包含對這些函式進行說明的sdk標頭檔案,最常見的就是一些特殊的api呼叫還需要包含其他的標頭檔案。

1. 開啟vc,選擇選單項file->new,選擇project選項卡並建立乙個名為filesys的win32 console application工程。

2. 在工程中建立原檔案選擇選單項project->add to project->file,此時將開啟乙個新視窗,在其中輸入想要建立的檔案名字,這裡是在其中編輯好原檔案並儲存。

3. 通過呼叫選單項build->rebuild all進行編譯連線,可以在指定的工程目錄下得到debug->程式,可以在控制台進入該debug目錄執行程式了。

5.源**程式:

#include <>

#include

#include <>

#include <>

#include <>

#define filename_len 21

#define input_len 81

#define command_len 11

using namespace std;

//結點結構

struct filenode

;void init初始化檔案樹

int parsecommand接受輸入的命令並把其分解成操作名和路徑檔名

void executecommand執行命令

int cdcomd處理cd命令

int creatcomd處理creat命令

int delcomd處理del命令

int dircomd處理dir命令

int mdcomd處理md命令

int rdcomd();

int findpath(char *ph尋找引數ph所指向的路徑

int findfilename(char para2從引數para2中找到要建立或刪除的檔案、目錄名,並把指標只想其父親結點

struct filenode* createfilenode(char filename,int isdir,int i_nlink);//建立結點

int getinput(char* buffer,unsigned int buffer_len);//獲取輸入

int checkcommand();//命令檢查

int getdir(int begin,char *path,char *curdir);//獲取路徑

void trim(char *str);

struct filenode *cp, *tp, *root;

char path[input_len-command_len];//記錄當前走過的路徑

char para1[command_len],para2[input_len-command_len];

char curpath[input_len-command_len],tmppath[input_len-command_len];

char filename[filename_len],tmp;

unsigned int i,j;//int i,j;

//主函式

int main()

return 0;

}//執行命令子函式

void executecommand()

//建立結點

struct filenode* createfilenode(char filename,int isdir,int i_nlink)

//初始化檔案樹

void init()

{ struct filenode *dir1node,*dir2node,

*file1node,*etcnode,*libnode,*usernode,

*binnode2,*liunode,*sunnode,*ftinode;

strcpy(path,"/"); //根目錄寫入當前路徑

//建立檔案樹的結點

dir1node=createfilenode("dir1",1,0);

dir2node=createfilenode("dir2",1,0);

file1node=createfilenode("file1",0,0);

etcnode=createfilenode("etc",1,0);

libnode=createfilenode("lib",1,0);

usernode=createfilenode("user",1,0);

binnode2=createfilenode("bin",1,0);

liunode=createfilenode("liu",1,0);

sunnode=createfilenode("sun",1,0);

作業系統檔案管理系統模擬實驗

檔案管理系統模擬 1.實驗目的 通過乙個簡單多使用者檔案系統的設計,加深理解檔案系統的內部功能及內部實現 2.實驗內容 為linux系統設計乙個簡單的二級檔案系統。要求做到以下幾點 1 可以實現下列幾條命令 至少4條 login 使用者登入 dir 列檔案目錄 create 建立檔案 delete ...

作業系統檔案管理

博文很長,我把一章的內容都總結在這裡了。在現代計算機系統中,要用到大量的程式和資料,因記憶體容量有限,且不能長期儲存,故而平時總是把它們以檔案的形式存放在外存中,需要時再隨時將它們調入記憶體。如果由使用者直接管理外存上的檔案,不僅要求使用者熟悉外存特性,了解各種檔案的屬性,以及它們在外存上的位置,而...

作業系統安全配置大作業格式

北京城市學院資訊學部 2013 2014 1學期 作業系統安全配置課程大作業 專業 四號宋體居中,2倍行距,下同 班級 12級計應專1 學生姓名 學號2013年 11 月 目錄第一章作業系統安全理論概述y 第二章作業系統安全測評y 第三章對登錄檔的安全管理y 第四章對使用者和組的安全管理y 第五章對...