




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統課程設計在Linux環境下模擬實現命令解釋器專業計算機科學與技術學生姓名班級學號任課教師完成日期2014年1月目 錄一、課程設計的目的、要求3二、課程設計的內容4(1)題目選擇4(2)系統功能要求4(3)具體功能的實現4(4)課程設計步驟4 (5) 課程設計內容5(一) 概念原理5(二)詳細設計6(三) 運行結果6(四)主要代碼7三、課程設計小結12一、課程設計的目的、要求【目的】:本課程設計是學生學習完linux操作系統課程后,進行的一次全面的綜合訓練,通過課程設計,讓學生更好地掌握linux操作系統的原理及實現方法,加深對操作系統基礎理論和重要算法的理解,加強學生的動手能力。【要求
2、】:從課程設計的目的出發,通過設計工作的各個環節,達到以下教學要求:2人一組,每組從所給題目中任選一個(如自擬題目,需經指導教師同意),每個學生必須獨立完成課程設計,不能相互抄襲,同組者文檔不能相同;設計完成后,將所完成的工作交由指導教師檢查;要求寫出一份詳細的設計報告。二、課程設計的內容(1)題目選擇在Linux環境下模擬實現命令解釋器(2)系統功能要求1、定義 mydir 具有dir 的功能2、定義 mycd 具有cd 的功能3、定義 mycopy 具有cp 的功能4、定義 mydel 具有del 的功能(3)具體功能的實現本程序在不使用system()系統調用的前提下實現了某些Linux
3、環境下的系統自帶功能,如:1、mydir命令是列出當前目錄中的所有目錄及文件 輸入格式:mydir2、mycd命令是改變當前工作目錄 輸入格式:mycd 3、mycopy命令是復制文件的功能 輸入格式:mycopy 4、mydel命令是刪除所輸入的目錄 輸入格式:mydel 5、exit命令是退出命令解釋程序 輸入格式:exit(4)課程設計步驟1、新建一個gwz目錄,mkdir gwz2、進入gwz目錄3、進入vim命令編輯器,新建一個gwz.c文件,vim gwz.c4、輸入代碼5、編譯gwz.c文件,gcc -o gwz gwz.c6、運行程序./gwz (5) 課程設計內容(1) 概念
4、原理該命令解析器程序運用了C+與C語言相結合完成了題目所要求的幾種功能,并充分調用了外部函數實現各項功能。如下是程序中運用到較為重要的幾個函數:1、調用getcwd()函數函數原型:char * getcwd(char * buf,size_t size);函數說明:getcwd()會將當前的工作目錄絕對路徑復制到參數buf所指的內存空間,參數size為buf的空間大小。在調用此函數時,buf所指的內存空間要足夠大,若工作目錄絕對路徑的字符串長度超過參數size大小,則回值NULL,errno的值則為ERANGE。倘若參數buf為NULL,getcwd()會依參數size的大小自動配置內存(使
5、用malloc(),如果參數size也為0,則getcwd()會依工作目錄絕對路徑的字符串程度來決定所配置的內存大小,進程可以在使用完此字符串后利用free()來釋放此空間。返回值:執行成功則將結果復制到參數buf所指的內存空間,或是返回自動配置的字符串指針。失敗返回NULL,錯誤代碼存于errno。2、調用opendir()函數函數原型:DIR * opendir(const char * name);函數說明:opendir()用來打開參數name指定的目錄,并返回DIR*形態的目錄流,和open()類似,接下來對目錄的讀取和搜索都要使用此返回值。返回值:成功則返回DIR* 型態的目錄流,
6、打開失敗則返回NULL。3、readdir()函數語法:struct dirent* readdir(DIR* dir_handle); 返回值:dirent結構 函數種類:文件存取 內容說明:本函數用來讀取目錄。返回是dirent結構體指針。4、在mycd()函數里用到了chdir()函數,chdir 是C語言中的一個系統調用函數(同cd)函數名稱:_chdir(在TC2.0下可以寫作chdir)功 能: 改變當前工作目錄頭文件:direct.h(在TC2.0下為dir.h)用 法: int _chdir(const char *path);返回值:成功返回0 ,失敗返回-1當成功改變當前目
7、錄時則返回0,若目錄不存在或改變不成功時返回-1。(二)詳細設計程序的每個功能基本都有由一個函數來實現。1、int ReadCommand(void)/讀取命令2、int ParseCommand(void)/對輸入的命令進行解析3、int ExcuteCommand(void)/執行命令4、int mydir(void)/dir命令5、int mycd(void)/改變當前文件夾6、int mycopy(void)/復制文件7、int mydel(void)/deldir命令具體實現代碼請見附錄。(3) 運行結果1、當輸入./gwz后進入該命令解釋器,下圖為該解釋器的首界面 2、按照首界面的
8、提示輸入mydir后則屏幕顯示如下,列出當前目錄中的所有目錄及文件。 3、輸入mycd 111后改變目錄成功,輸入mycd aaaa后則顯示目錄不存在。 4、 輸入mycopy命令成功復制文件。 5、輸入mydel成功刪除目錄,但不能刪除文件。(四)主要代碼#include #include #include #include #include #include #include #include char command_str256;/存儲輸入的命令串char param_list20256;/儲存分析好的命令串int ReadCommand(void);int ParseCommand(
9、void);int ExcuteCommand(void);int mycopy(void);int mycd(void);int mydel(void);int mydir(void);void exit();int ReadCommand(void)/讀取命令char c;int i=0;while (scanf(%c,&c)!=EOF & c!=n & i256)/從輸入串中逐個讀取字符,當遇到結尾或換行或讀取的字符已達到字符串的總長度時結束command_stri=c;i+;command_stri=0;/字符串后加“0”表示結束return 0;int ParseCommand(vo
10、id)/對輸入的命令進行解析unsigned int i=0,j=0,n=0;int blank_flag=1;/初始化為前面有分割符,為0時表示前面沒有分割符for (i=0;id_name0!=.)printf(%st,ent-d_name);/%s表示數據輸出類型為字符串printf(n);closedir(dirp);/關閉目錄return 0;int main(int argc,char*argv) printf(*n);printf(* 在Linux環境下模擬實現命令解釋器 *n);printf(* 計算機116班 *n);printf(* 1110704606 *n);print
11、f(* 管維舟 *n);printf(*n);printf(歡迎使用簡單命令解釋器!n);printf(命令有:mydir-顯示當前目錄下所有文件和目錄n);printf( mycd-改變當前目錄n); printf( mycopy-復制文件n);printf( mydel-刪除目錄n);printf( exit-退出命令解釋程序n);while (1)printf(power by GWZ$);ReadCommand();ParseCommand();if (ExcuteCommand()=-1)break;return 0;三、課程設計小結通過一周的Linux操作系統課程設計,對這學期所學得Linux操作系統以及上學期所學的計算機操作系統有了更加全面深刻的認識,書本上的知識得到鞏固,把理論與實踐結合了起來。通過此次課程設計,對linux環境下的各種命令有了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合作伙伴研究合同書
- 2025至2031年中國雙泡盒行業投資前景及策略咨詢研究報告
- 2025至2031年中國加氫反應器三通行業投資前景及策略咨詢研究報告
- 2025至2030年中國錦綸四叉五環吊裝紡織繩數據監測研究報告
- 2025至2030年中國鍍鋁濕紙巾袋數據監測研究報告
- 2025至2030年中國迷你蘋果雙卡電視手機數據監測研究報告
- 2025至2030年中國熱熔技術布料油漆滾動刷數據監測研究報告
- 2025版合同:附條件租賃協議書
- 高校商鋪裝修方案范本
- 會計考證介紹培訓
- 【土木工程畢業論文】施工組織設計
- 交互設計(精華)課件
- 護理病例分析試題題庫
- 開寵物店的創業計劃書
- 心外科常見疾病診療常規
- 設施規劃與物流分析課程設計-變速箱廠布置與搬運系統設計
- 腫瘤靶向藥物治療
- MT-T 1201.6-2023 煤礦感知數據聯網接入規范 第6部分:工業視頻
- 數據結構課件完整版
- 黃芩中黃芩苷的提取分離
- 2023屆匯文中學化學高一第二學期期末復習檢測模擬試題含解析
評論
0/150
提交評論