Linux操作系统课程设计_第1页
Linux操作系统课程设计_第2页
Linux操作系统课程设计_第3页
Linux操作系统课程设计_第4页
Linux操作系统课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux操作系统课程设计一、利用Linux有关系统调用函数编写一个简单的文件管理工具,要求实现以下功能(可在任意目录下操作)。功能说明(提示)1.创建新文件open(),close()2.写文件open(),write()3.读文件read()4.复制文件read(),write()5.查看文件权限需使用execv()函数执行”ls-l”命令实现6.修改文件权限chmod()7.创建目录mkdir()8.查看当前路径与目录类同59.删除目录rmdir()10.切换目录chdir()11.建立文件链接link()0.退出exit()二、通过访问/proc文件系统来获取系统的当前信息,包括:⑴进程信息。包括:进程名称、运行状态、PID、优先级、内存使用量。可结束任一进程。⑵系统信息。包括:处理器信息(CPU名称、CPU频率、CPU类型、缓存大小),操作系统信息(系统类型、系统版本、GCC编译版本)。⑶内存资源。包括:内存和缓冲区(内核使用情况(已用、剩余、中共)、交换区使用情况(已用、剩余、中共)),CPU使用率(各个核的使用率)。⑷模块信息。包括:模块名称、内存使用、使用次数。可卸载任一模块。一、利用Linux有关系统调用函数编写一个简单的文件管理工具程序代码:##include<iostream>#include<>#include<fstream>#include<>usingnamespacestd;intshowmenu()〃显示菜单,在主函数中循环调用。返回用户选择的选项。{intoption;cout<<"1.创建新文件\n”;cout<<”2.写文件\n”;cout<<"3.读文件\n”;cout<<”4.复制文件\n”;cout<<”5.查看文件权限\n”;cout<<"6.修改文件权限\n”;cout<<”7.创建目录\n”;cout<<〃8.查看当前路径与目录\n〃;cout<<"9.删除目录\n10.切换目录\n”;cout<<"11.建立文件链接\n0.退出\n”;cin>>option;returnoption;}voidcreatefile()//以用户输入的文件名创建新文件{stringfilename;cout<<"inputthefilename\n";cin>>filename;ofstreamof;(());if(!of)cerr<<"openfail"<<endl;}();}voidinsert()//写入用户指定的内容到指定文件{stringfilename,msg;cout<<"inputthefilename\n";cin>>filename;cout<<"inputsomethingyouwanttoinsert\n";cin>>msg;ofstreamout;(());if(!out){cerr<<"openfail"<<endl;}out<<();();}voidreadfile()//读取文件内容并显示{stringfilename;cout<<"inputthefilename\n";cin>>filename;ifstreamin;(());if(!in){cerr<<"openfail"<<endl;charbuffer[1024];while(!()){(buffer,100);}cout<<"===>"<<buffer<<endl;();}voidcopyfile()//复制文件{stringifilename;cout<<"inputthefilenameofoldfile\n";cin>>ifilename;/*将文件内容读取到buffer中*/ifstreamin;(());if(!in){cerr<<"openfail"<<endl;}charbuffer[1024];while(!()){(buffer,100);}();/*将buffer中的内容写入新文件*/stringofilename,msg;cout<<"inputthefilenameofnewfile\n";cin>>ofilename;ofstreamout;(());if(!out){cerr<<"openfail"<<endl;}out<<buffer;();}voidexecutecommand(constchar*command,char*const*argv)/在子进程中执行路径为//command的程序,参数在argv中{intpid=fork();if(pid==0){if(execv(command,argv)==-1){cout<<"===>error\n";}}elsesleep(1);//等待子进程执行完毕}#include<iostream>#include""usingnamespacestd;intmain(){while(true)//keepingshowingthemenu{intoption;option=showmenu();switch(option){case1://创建新文件createfile();break;case2://写入insert();break;case3://读取readfile();break;case4:〃复制copyfile();break;case5:〃查看权限{char*argv[]={〃ls〃,〃T〃,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,()),strcpy(f,()),NULL};char*path="/bin/chmod";executecommand(path,argv);break;}case7:〃创建目录{stringfoldername;cout<<"inputthefoldername\n";cin>>foldername;charf[20];char*argv[]={"mkdir”,strcpy(f,()),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,()),"-r”,NULL};char*path="/bin/rm";executecommand(path,argv);break;}case10://切换目录{stringdir;cout<<"inputthepathyouwanttobe\n";cin>>dir;charp[30];if(chdir(strcpy(p,()))==-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,()),strcpy(np,()))==-1){cout<<"failtochangedir"<<endl;}break;}case0:return0;default:cout<<〃请选择0到11"<<endl;break;}cout<<"\n";}}程序分为和两部分,主要功能保存在filehandler,h中,由showmenu()函数显示菜单,createfile()函数创建新文件,insert()函数写文件,readfile()函数读文件,copyfile()函数复制文件,executecommand()函数执行命令°filehandler.pp文件中,主函数为一个死循环,调用showmenu()函数显示菜单、获取用户选择的选项,之后通过switch匹配相应的函数。实验截图:

111不建设使用从字苻串常星至「「丽「/[|勺转换不理议使用从字符串常量到Whm「戒的辖换不建议使用从字符串常鼠到yh"*’的笳换不建设便用以字符串常星到wnw的转换不建设使用以字符串常量到,che「Q的转懊不建做使用从字符串常呈到IWhNL,的转换不建议使用从字符串常虽到官时L,的辖换不建议使用从字符串常量到七隘「『的转换不建设使用从字符率常量到Ph"*'的转换木建设使用版字苻串常量到Wha「「的转挽天建设使用玖字符*常量到十住「卜的转挨不建设使用从字符串常E到,ch"*,的转换[-Wwrite-strings][-Wwrtte-strings][-wwrlte-str不建设使用从字苻串常星至「「丽「/[|勺转换不理议使用从字符串常量到Whm「戒的辖换不建议使用从字符串常鼠到yh"*’的笳换不建设便用以字符串常星到wnw的转换不建设使用以字符串常量到,che「Q的转懊不建做使用从字符串常呈到IWhNL,的转换不建议使用从字符串常虽到官时L,的辖换不建议使用从字符串常量到七隘「『的转换不建设使用从字符率常量到Ph"*'的转换木建设使用版字苻串常量到Wha「「的转挽天建设使用玖字符*常量到十住「卜的转挨不建设使用从字符串常E到,ch"*,的转换[-Wwrite-strings][-Wwrtte-strings][-wwrlte-strIngs][-Wwrite-strings][-Wwrtte-strings][-kwrtte-strings][-wwrtte-strings][-wwrlte-strIngs]E-wwrlte-strIngs][-Wwrite-strings][-h'write-strings][-Wwrite-strings],filehandler.cpp188:34:FtLehandler.cpp:89:27:root@shan-vtrtiiaL-nachtne:/hoHe/shan/shtyan6ffLSr程序“3”尚未安装,您可以使用以下命令安装:\apt-getinstallsikroot^shan-uirtual-machine:/home/shan/shiyan6#Isa.outfilehandler.c-filehandler-cppfilehandler.hftlehandlerxh~root@shdn-vtrtual.TndcMne:/hone/shdn/shtyan6#|之后运行程序,显示菜单,接着我们一个一个功能测试roDtgsharb-virtual-machine:/hDme/&han/shiyan6fl*/a*out1•创建新文件z.写文祚3.读文件4.痍制文件5.查看文件投限6•修改文件权限.创建目录4查看当前路径与目录9.删除目录,莒•切换目录11L建立文件镭接.退出选择功能1并输入文件名后,可以看到文件夹中确实创建了新文件选择功能3之后,输入要读取的文件的文件名,在提示符'===》”之后的是文件内容选择功能2选择功能3之后,输入要读取的文件的文件名,在提示符'===》”之后的是文件内容写文件孔读文件4豆制文件匚查看文件权限E修改文件权限兀创建目录4查看当前蹈径与目录少•删除目录场.切换目录1「建立文件链接孔讴出Inputthefilenamex:i_exleInputs&metzhingyouhello,welcome选择功能4,依次输入旧文件名,新文件名•创建新文件.写文件M读文件L复制文件5,查看文件权限6.修改文件权限7.创建目录旗查看当前路径与目录9•删除目录切换目录11.建立文件链接土退出4inputthefilenamexiexieinputthefilenamehellohello[只读]O/§hiyan6)・geditItF打开LjhelloXhello,welcome思保存S撤消a纯文本T制表符宽度;8T插入•等4DxIexIe[只读]《~/whiyani&)-gedk保存a"打开▼SSlnxiexieXhello^welcomel纯文本T制表符宽度:8T选择功能5,调用命令ls查看权限fl「创建新文件乏,写文件L读文件4-复制文件5一杏有文件极限J修改文件权限八创建目录队杏看当前路径与目录孔删除目录-蜀换目泉T•建立文件链接S退出5总用量M・rwxr^xr-rw-rw-r-rw-rwr-rw-rw-r-rw-rw-r-rw-「一_IT-rw-「——「x1root-1shan-1shan-1shan-1shan-1root-1rootrootshanshanshanshanrootroot19758Q324526Z126171313月月月月月月月622:05621:47621:48GZ1I50621:48622i19<322116行1,列14插入B*OUtfT-lehancHerxc~fLlehandler.cppf■Llehandler*hftiehandler+h~helloxLexte选择功能6,输入文件名xiexie,并输入777之后再选择功能5,可以看到test2的权限变成了rwxrwxrwx47*八I11•建立文件镭接队退出InputthefilenamexiexieinputthenodeTr=4,w=Z,x=lQ777example:777isrwxrwxrwxL创建新文件八写文件"读文件牝豆制文件5,查看文件极限6,修改文件权限八创建目录8•查看当前路径与目录9.删除目录M.切换目录11.建立文件销接。,退出5总用量40-rwxr-xr-x1rootroot1975S-rw-rw-r—1shan&hdn9rw-rw-r-1shanshan3245-「w-f-「一1shanshan2621-rw-rw-r--1shanshdn2617-f-「一「一1rootroot13rwxrwxrwx1rootroot13月月月月月月月78089604454112111122222222266666-6a*outfilehandler.c~filehandler*cppfilehandlerihFtlehandler.helloxiexie选择功能7,输入新目录的名字❷号峋Ishiyanfinputthefoldernanshan1.创建新文件,写文件一读文件4亘制文彳牛5.查看文件权限S.修改文件权限创建目录查看当前路径与目i删除目录切质目录11一建立文件销接日,退出软史驱动器计算机la主文件夹□桌面四视顿■]图片iT文档(CITS_文件系统shiyanCa.outfilehandkr.htekiMfilehandler.cpphelloxiexie选择功能8,查看当前目录选择功能9,输入刚刚创建的目录的目录名,确实删除了创建新文件w-写文件耽读文件L霎制文件5.查有文件权限队修改文件权限"创建目录8.查看当前路径与目:软盘驱动器计算机区主文件夹口桌面a.outhlehandler.cpp9•删除目录•切换目录”•建立文件贤接O视颌j・l图片®文档Ifrinchjr、土#indu>存incJ山IicIdHrKhn||[**I'ilehardlcr.hhello句.退出9Inputthefoldernashan寺音乐xiexie_文件系统回收站选择功能10,切换到/home目录口-j=l」=id■」虬口」[工nra9•删除目录le.ttlft目录]IL建立文件链接0•退出|10|inputthepathyouwanttobe/hone/1•创建新文件.写文件.读文件4.复制文件3•查看文件杈限6•修改文件杈限IT•创建目录8一查看当前路径与目录9•删除目录I项•切换目录11.建立文件链接机。•退出f/honeMi通过功能10切换会之前的shiyan6目录之后,选择功能11,创建filehandler.h的文件连接”创建新文件■写文件读文件复制文件查看文件权限L修改文件权限7•创建目录L查看当前路径与目9•删除目录M,切换目录11.建立文件格接L退出11inputoldpathfilehandlerxhinputnewpathlinkIfe,俨打开,Bl保存S■撤消i合II建全杆寸位LinkM^Include<lostrean>fftncludecstrtng*h>tftncludecfstream>//Include<unistd*h>usingnanespacestd;tntshownenuO〃显示菜单,在主函致中循环调用返回用户选择的选项。Lntoption;cout«,,l?ai建新文件\丘七ccut«,p2.写文件5”;cout<<,lJ3,谩立件\n\厂_攵工由白,G_〈二”7711d4W%二、通过访问/proc文件系统来获取系统的当前信息程序代码://F#include<>#include<sys/>#include<>#include<>#include<sys/>#include<>#include<>#include<>#include<>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");\n");\n");\n");\n");\n");\n");\n");\n");\n");\n");printf("**************1.查看进程信息*****************printf("**************2.查看系统信息***************printf("**************3.查看内存资源**************printf("**************4.查看模块信息**************printf("**************0.退出该系统**************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){TOC\o"1-5"\h\zprintf("\n");printf("***系统信息如下***\n");printf("\n");if(fork()==0){execlp("/bin/cat","cat","/proc/version",NULL);}else{wait(0);}TOC\o"1-5"\h\zprintf("\n");printf("***处理器信息如下******\n");printf("\n");if(fork()==0){execlp("/bin/cat","cat","/proc/cpuinfo",NULL);}else{wait(0);}}voidMIF(void){printf("\n");printf("***有关内存的信息如下***\n");printf("\n");if(fork()==0){execlp("/bin/cat","cat","/proc/meminfo",NULL);}else{wait(0);}}voidBIF(void){printf("\n");printf("***所有模块信息如下〔谨慎卸载〕***\n");printf("\n");char*path="/bin/lsmod";char*argv[4]={"lsmod",NULL};if(fork()==0){execv(path,argv);}else{wait(0);}printf("\n");charname[1024];printf("***请输入你所需要卸载的模块名:***\n");scanf("%s",name);char*pa="/sbin/rmmod";char*ar[4]={"rmmod",name,NULL};if(fork()==0){execv(pa,ar);}else{wait(0);printf("卸载成功!\n");}}实验截图:root^Lin-virtual-machine:/home/tin#gccshiyan.c-oshtyanroot^Lin-virtual-machine:/home/lin#*/shiyan*****金**去女女去去*去***女女*女女*女女*女*士女*/*士士*女去*******亲爱的用户请摘出你策要的操作********■■*■*■#■*★#■***■*■**■£]牙呈彳日共*fdtdfdtdb会★★会★会#大去去*▲去itit去去走去之寿%老充[吉~k~k*~k士士士士士女女女女女*★*#■*★#■*比佥土去佥去3|Aj丸夫士丸**■夫#■**#■*1^■土*■去■£去4'更耳&彳日iffdtdfdtdb会★★会★■人%去*%去itit■去去it■去8+l且宙充士去士女共女丸汰去丸★****★****★**去去去去**女**女**女**夫士*夫女女女女女**请输入1-4.…进程信息:

清谕入1-4...1"**现在正在进人进程信息界面**+*pst在该界面你可以谕人k遂行杀死进程,输入k之后再输入进程编号(PID)号ps:如果协想要退出该界面,可以输A.q进行退出top-21:52:32up40nin,2users,loadaverage:0.00,队驼,0+G6Tasks:195total,1runningt191sleepingf0stepped±3zombieCpjfs):2.2%us,l*29fsy.96.7*3,0+0?£wa,0•龄hi,O.OMsi,0-0%stMen:1011928ktotal±890736kused,121192kfree,47S92kbuffersswap:975S6Sktotal,okused,975863kfree,362912kcachedPI。USERPRN1VJLETRES5HR5览匚FU警MEMTIME+COMMANDISISroot23e2Q4m60nQ472S25.20:40.63KorgZ4&2Tin2001307F181n3&nS18*30:Zd*65conptz3254lin20esasm19n12™S11.9Q:01.54gnome-terminal3087lin2005&5m35nions13,60:11*72gedtt2017root2ae163m46363740Sga.5Q:02.99tfmtoolsd3S54root2&0173321J75972R09*1top1root2002457624641348S00+2O:01+69tntt2root2&00&。S03,0O:O0,0Okthreadd3root200000S0O+0O:00+18ksoftirqd/06rootRT0000S09.00100.03mtgratton/o7rootRT0000SGO+0O:O0+O2watchdog/O杀死进程:■跚ep:|PIDto975868ktotal,kill:333。・0kused,975868kfree.382228kcached1PIDUSERPRVIRTRESSHR5iKCPUKMIEMTIME+COMMAND1518root200204m60na^72;66*20;54.65Xorg24H1Ltn2301080m41n21™E3q.29:&7.72nautlLus2-162tin2801307m82n36m52a.3Q126.99compl-Z3014root200000E10,00:0Qr3&kworker/G:ftlin__EL75REXOJL_h」aeaq_1a,fii_aa_rlhnc-rl*Enn,±*ju+ild7*+«LUjV,•口为棉口JW山口AllL.K7«口月3LJU.U*A2>L|Men:1011923ktotal,907396k1jsed,104532kfret26680kbuffersS网叫:975868ktotalH2616k1used,973252kFree,406640kcachedPIDUSERPRNIVIRTRESSHRS36CPU%MIEMTIME-i-COMMAND1518root源0ZQfn64n8504S66.51:01-93Xorg3087Ltn20$56Sh35n16nSqMM0:15-56gedtt2462Itn203isosnssm36nS2a.40I3S.90conipt23254IInZ005901119n12nS22.&0:03-39gnoneTterninol1S12root2091S9767&fl524S00.10:00.S5trqbalance2542Itn200267n362B2763S&0.4SB4.95ibus-daenon3361root26017432137297ZR00.10:00-56top1root20924S7620761348S00.20:01.71tntt2root20a0e0500.00:00h00kthreadd3root20agg9S00.90:00-23ksoftirqd/&5rootRT9000S00.00:09.03ntgratton/a7rootRT0000S00.00:&0<&2watchdog/0SrootRT0000S00.90:00-01nigration/IIDrDQt20300as0o.a0^00.21ksoftlrqd/111rootRT0000s00.00:00-02watchdog/112root0-20ee&s00.&0:00.00epuset13root0-23a00s00.a□i00.00khelper14root0000s00.00:00-00kdevtnpfs系统信息:

U.J11LLJLSIJFWL#**#*#*#**#童*#*#*##**#菖*#**********盘古**清输入1・4...2卜"系统信息如下■*■**Linuxversion3-S.O-23-generic(builddlgkomainu)o4+6.3-liubuntu5))??3<5-prectsel-Ub'untijSN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论