版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
年4月19日Linux操作系統(tǒng)課程設計文檔僅供參考Linux操作系統(tǒng)課程設計班級:計算機13-2 學號: 姓名:謝甲山成績:一、利用Linux有關系統(tǒng)調用函數編寫一個簡單的文件管理工具,要求實現以下功能(可在任意目錄下操作)。功能說明(提示)1.創(chuàng)立新文件open(),close()2.寫文件open(),write()3.讀文件read()4.復制文件read(),write()5.查看文件權限需使用execv()函數執(zhí)行”ls-l”命令實現6.修改文件權限chmod()7.創(chuàng)立目錄mkdir()8.查看當前路徑與目錄類同59.刪除目錄rmdir()10.切換目錄chdir()11.建立文件鏈接link()0.退出exit()二、經過訪問/proc文件系統(tǒng)來獲取系統(tǒng)的當前信息,包括:(1)進程信息。包括:進程名稱、運行狀態(tài)、PID、優(yōu)先級、內存使用量??山Y束任一進程。(2)系統(tǒng)信息。包括:處理器信息(CPU名稱、CPU頻率、CPU類型、緩存大小),操作系統(tǒng)信息(系統(tǒng)類型、系統(tǒng)版本、GCC編譯版本)。(3)內存資源。包括:內存和緩沖區(qū)(內核使用情況(已用、剩余、中共)、交換區(qū)使用情況(已用、剩余、中共)),CPU使用率(各個核的使用率)。(4)模塊信息。包括:模塊名稱、內存使用、使用次數??尚遁d任一模塊。一、利用Linux有關系統(tǒng)調用函數編寫一個簡單的文件管理工具程序代碼:#filehandler.h#include<iostream>#include<string.h>#include<fstream>#include<unistd.h>usingnamespacestd;intshowmenu()//顯示菜單,在主函數中循環(huán)調用。返回用戶選擇的選項。{intoption;cout<<"1.創(chuàng)立新文件\n";cout<<"2.寫文件\n";cout<<"3.讀文件\n";cout<<"4.復制文件\n";cout<<"5.查看文件權限\n";cout<<"6.修改文件權限\n";cout<<"7.創(chuàng)立目錄\n";cout<<"8.查看當前路徑與目錄\n";cout<<"9.刪除目錄\n10.切換目錄\n";cout<<"11.建立文件鏈接\n0.退出\n";cin>>option;returnoption;}voidcreatefile()//以用戶輸入的文件名創(chuàng)立新文件{stringfilename;cout<<"inputthefilename\n";cin>>filename;ofstreamof;of.open(filename.c_str());if(!of){cerr<<"openfail"<<endl;}of.close();}voidinsert()//寫入用戶指定的內容到指定文件{stringfilename,msg;cout<<"inputthefilename\n";cin>>filename;cout<<"inputsomethingyouwanttoinsert\n";cin>>msg;ofstreamout;out.open(filename.c_str());if(!out){cerr<<"openfail"<<endl;}out<<msg.c_str();out.close();}voidreadfile()//讀取文件內容并顯示{stringfilename;cout<<"inputthefilename\n";cin>>filename;ifstreamin;in.open(filename.c_str());if(!in){cerr<<"openfail"<<endl;}charbuffer[1024];while(!in.eof()){in.getline(buffer,100);}cout<<"===>"<<buffer<<endl;in.close();}voidcopyfile()//復制文件{stringifilename;cout<<"inputthefilenameofoldfile\n";cin>>ifilename;/*將文件內容讀取到buffer中*/ifstreamin;in.open(ifilename.c_str());if(!in){cerr<<"openfail"<<endl;}charbuffer[1024];while(!in.eof()){in.getline(buffer,100);}in.close();/*將buffer中的內容寫入新文件*/stringofilename,msg;cout<<"inputthefilenameofnewfile\n";cin>>ofilename;ofstreamout;out.open(ofilename.c_str());if(!out){cerr<<"openfail"<<endl;}out<<buffer;out.close();}voidexecutecommand(constchar*command,char*const*argv)//在子進程中執(zhí)行路徑為//command的程序,參數在argv中{intpid=fork();if(pid==0){if(execv(command,argv)==-1){cout<<"===>error\n";}}elsesleep(1);//等待子進程執(zhí)行完畢}#filehanlder.cpp#include<iostream>#include"filehandler.h"usingnamespacestd;intmain(){while(true)//keepingshowingthemenu{intoption;option=showmenu();switch(option){case1://創(chuàng)立新文件createfile();break;case2://寫入insert();break;case3://讀取readfile();break;case4://復制copyfile();break;case5://查看權限{char*argv[]={"ls","-l",NULL};char*path="/bin/ls";executecommand(path,argv);break;}case6://修改權限{stringfilename;stringmod;cout<<"inputthefilename\n";cin>>filename;cout<<"inputthemode,r=4,w=2,x=1。example:777isrwxrwxrwx\n";cin>>mod;charf[20],m[10];char*argv[]={"chmod",strcpy(m,mod.c_str()),strcpy(f,filename.c_str()),NULL};char*path="/bin/chmod";executecommand(path,argv);break;}case7://創(chuàng)立目錄{stringfoldername;cout<<"inputthefoldername\n";cin>>foldername;charf[20];char*argv[]={"mkdir",strcpy(f,foldername.c_str()),NULL};char*path="/bin/mkdir";executecommand(path,argv);break;}case8://查看當前路徑{char*argv[]={"pwd",NULL};char*path="/bin/pwd";executecommand(path,argv);break;}case9://切換目錄{stringfoldername;cout<<"inputthefoldername\n";cin>>foldername;charf[20];char*argv[]={"rm",strcpy(f,foldername.c_str()),"-r",NULL};char*path="/bin/rm";executecommand(path,argv);break;}case10://切換目錄{stringdir;cout<<"inputthepathyouwanttobe\n";cin>>dir;charp[30];if(chdir(strcpy(p,dir.c_str()))==-1){cout<<"failtochangedir"<<endl;}break;}case11://建立文件連接{stringoldpath,newpath;cout<<"inputoldpath\n";cin>>oldpath;cout<<"inputnewpath\n";cin>>newpath;charnp[30],op[34];if(link(strcpy(op,oldpath.c_str()),strcpy(np,newpath.c_str()))==-1){cout<<"failtochangedir"<<endl;} break;}case0:return0;default:cout<<"請選擇0到11"<<endl;break;}cout<<"\n";}}程序分為filehandler.h和filehandler.cpp兩部分,主要功能保存在filehandler,h中,由showmenu()函數顯示菜單,createfile()函數創(chuàng)立新文件,insert()函數寫文件,readfile()函數讀文件,copyfile()函數復制文件,executecommand()函數執(zhí)行命令。filehandler.pp文件中,主函數為一個死循環(huán),調用showmenu()函數顯示菜單、獲取用戶選擇的選項,之后經過switch匹配相應的函數。實驗截圖:之后運行程序,顯示菜單,接著我們一個一個功能測試選擇功能1并輸入文件名后,能夠看到文件夾中確實創(chuàng)立了新文件選擇功能2之后、輸入要寫入的文件的文件名,再輸入要寫入的內容選擇功能3之后,輸入要讀取的文件的文件名,在提示符”===》”之后的是文件內容選擇功能4,依次輸入舊文件名,新文件名選擇功能5,調用命令ls查看權限選擇功能6,輸入文件名xiexie,并輸入777之后再選擇功能5,能夠看到test2的權限變成了rwxrwxrwx選擇功能7,輸入新目錄的名字選擇功能8,查看當前目錄選擇功能9,輸入剛才創(chuàng)立的目錄的目錄名,確實刪除了選擇功能10,切換到/home目錄經過功能10切換會之前的shiyan6目錄之后,選擇功能11,創(chuàng)立filehandler.h的文件連接二、經過訪問/proc文件系統(tǒng)來獲取系統(tǒng)的當前信息程序代碼://File.c#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include<syslog.h>#include<string.h>#include<stdlib.h>#include<wchar.h>voidmenu(void);voidPIF(void);voidSIF(void);voidMIF(void);voidBIF(void);intmain(){ intchoose; menu(); scanf("%d",&choose); while(choose!=0){ switch(choose){ case1:PIF(); break; case2:SIF(); break; case3:MIF(); break; case4:BIF(); break; default:printf("**************沒有該選項,請重新輸入**************\n"); } menu(); scanf("%d",&choose);}return0;}voidmenu(void){ printf("***************************************\n"); printf("*********親愛的用戶請輸出你需要的操作*********\n"); printf("**************1.查看進程信息***************** \n"); printf("**************2.查看系統(tǒng)信息*************** \n"); printf("**************3.查看內存資源************** \n"); printf("**************4.查看模塊信息************** \n"); printf("**************0.退出該系統(tǒng)************** \n"); printf("***************************************\n"); printf("**************請輸入1-4*************\n");}voidPIF(void){ char*pa="/usr/bin/X11/top"; char*arg[4]={"top",NULL}; if(fork()==0){ printf("*****現在正在進入進程信息界面******\n"); execv(pa,arg); printf("ps:在該界面你能夠輸入k進行殺死進程,輸入k之后再輸入進程編號(PID)號\n");printf("ps:如果你想要退出該界面,能夠輸入q進行退出\n"); }else{ wait(0); }}voidSIF(void){ printf("\n"); printf("***系統(tǒng)信息如下***\n"); printf("\n"); if(fork()==0){ execlp("/bin/cat","cat","/proc/version",NULL); }else{ wait(0); } printf("\n"); printf(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025服裝加盟店的合同范本
- 金融風控培訓收獲
- 【七年級下冊地理湘教版53】第六章 認識大洲 全練版:第一節(jié) 亞洲及歐洲
- 糧油食品行業(yè)銷售工作總結
- 鋁制品生產線承攬合同三篇
- 整形美容院前臺接待工作總結
- 電力能源行業(yè)營業(yè)員工作總結
- 教育行業(yè)中的客戶服務平臺建設
- 心理健康教育在職業(yè)發(fā)展中的作用
- 貨物存儲管理措施計劃
- 教師教學常規(guī)管理培訓夯實教學常規(guī)強化教學管理PPT教學課件
- 公務員考試工信部面試真題及解析
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 2023年上海英語高考卷及答案完整版
- 西北農林科技大學高等數學期末考試試卷(含答案)
- 金紅葉紙業(yè)簡介-2 -紙品及產品知識
- 《連鎖經營管理》課程教學大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評分 表格
- 定量分析方法-課件
- 朱曦編著設計形態(tài)知識點
評論
0/150
提交評論