版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux操作系统课程设计一、利用Linux有关系统调用函数编写一个简单的文件管理工具,要 求实现以下功能可在任意目录下操作。功能说明提示1创立新文件open(), close()2写文件open(),write()3读文件read()4复制文件read(),write()5.查看文件权限需使用execv函数执行 IS命令实现6修改文件权限chmod()7.创立目录mkdir()8.查看当前路径与目录类同59.删除目录rmdir()10.切换目录chdir()11.建立文件链接lin k()0.退出exit()二、通过访问/proc文件系统来获取系统的当前信息,包括:1进程信息。包括:进程名称
2、、运行状态、PID优先级、内存使用量。可结束任一进程。2系统信息。包括:处理器信息CPU名称、CPU频率、CPU类型、 缓存大小,操作系统信息系统类型、系统版本、GCC编译版本。内存资源。包括:内存和缓冲区内核使用情况已用、剩余、中共、 交换区使用情况已用、剩余、中共,CPU使用率各个核的使用率。4模块信息。包括:模块名称、内存使用、使用次数。可卸载任一模 块。一、利用Linux有关系统调用函数编写一个简单的文件管理工具程序代码:#include <iostream>#include <>#include <fstream>#include <>
3、using namespace std;int showmenu() / 显示菜单,在主函数中循环调用。返回用户选择的选项 int option;cout<<"1.创立新文件 n"cout<<"2.写文件 n"cout<<"3.读文件 n"cout<<"4.复制文件 n"cout<<"5.查看文件权限 n"cout<<"6.修改文件权限 n"cout<<"7.创立目录 n"
4、cout<<"8.查看当前路径与目录 n"cout<<"9.删除目录 n10. 切换目录 n"cout<<"11.建立文件链接 n0. 退出 n"cin>>option;return option;void createfile() /以用户输入的文件名创立新文件string filename;cout<<"input the filenamen" cin>>filename;ofstream of;( ();if (!of)cerr<&
5、lt;"open fail"<<endl;();void insert() /写入用户指定的内容到指定文件string filename, msg;cout<<"input the filenamen"cin>>filename;cout<<"input something you want to insertn" cin>>msg;ofstream out;( ();if (!out)cerr<<"open fail"<<endl
6、;out<<();();void readfile() / 读取文件内容并显示string filename;cout<<"input the filenamen" cin>>filename;ifstream in;( ();if (!in)cerr<<"open fail"<<endl;char buffer1024;while (!() (buffer,100);cout<<"=>"<<buffer<<endl;();void
7、copyfile() / 复制文件string ifilename;cout<<"input the filename of old filen" cin>>ifilename;/* 将文件内容读取到 buffer 中 */ ifstream in;( ();if (!in) cerr<<"open fail"<<endl;char buffer1024;while (!() (buffer,100);();/* 将 buffer 中的内容写入新文件 */string ofilename, msg;cout
8、<<"input the filename of new file n"cin>>ofilename;ofstream out;( ();if (!out) cerr<<"open fail"<<endl;out<<buffer;();在子进程中执void executecommand(const char * command, char * const* argv) / 行路径为 /command 的程序,参数在 argv 中int pid = fork();if (pid = 0)if (e
9、xecv(command, argv) = -1)cout<<"=>errorn"elsesleep(1); / 等待子进程执行完毕#include <iostream>#include ""using namespace std;int main()while (true) /keeping showing the menuint option;option = showmenu();switch(option)case 1: / 创立新文件 createfile();break;case 2: / 写入insert();
10、break;case 3: / 读取readfile();break;case 4: / 复制copyfile();break;case 5: / 查看权限char * argv = "ls","-l",NULL;char * path = "/bin/ls" executecommand(path, argv); break;case 6: /修改权限string filename;string mod; cout<<"input the filenamen" cin>>filename;
11、cout<<"input the mode, r=4,w=2,x=1 。 example:777 is rwxrwxrwxn" cin>>mod;char f20,m10;char * argv = "chmod", strcpy(m, (), strcpy(f, (), NULL;char * path = "/bin/chmod" executecommand(path, argv); break;case 7: / 创立目录string foldername; cout<<"inpu
12、t the foldernamen" cin>>foldername;char f20;char * argv = "mkdir", strcpy(f, (), NULL;char * path = "/bin/mkdir" executecommand(path, argv);break;case 8: / 查看当前路径char * argv = "pwd", NULL; char * path = "/bin/pwd" executecommand(path, argv); break;c
13、ase 9: / 切换目录string foldername;cout<<"input the foldernamen" cin>>foldername;char f20;char * argv = "rm", strcpy(f, (),n rn"-r",NULL;char * path = "/bin/rm"executecommand(path, argv); break;case 10: / 切换目录string dir;cout<<"input the path
14、 you want to be n" cin>>dir;char p30;if (chdir(strcpy(p, () = -1)cout<<"fail to change dir"<<endl; break;case 11: /建立文件连接string oldpath,newpath;cout<<"input old path n"cin>>oldpath;cout<<"input new pathn"cin>>newpath;char n
15、p30,op34;if (link(strcpy(op, (), strcpy(np, () = -1)cout<<"fail to change dir"<<endl;break;case 0:return 0;default:cout << " 请选择 0 到 11" << endl;break;cout<<"n"程序分为和两局部,主要功能保存在filehandler,h中,由showmenu()函数显 示菜单,createfile()函数创立新文件,insert()函数
16、写文件,readfile()函数读文件, copyfile()函数复制文件,executecommand()函数执行命令。filehandler.pp文件中, 主函数为一个死循环,调用showme nu()函数显示菜单、获取用户选择的选项,之后通过 switch 匹配相应的函数。实验截图:roQtshdh- vlrtudl-ridthine: /hone/shan/shtyanfi# g+* f llEhTndLHr .匚卩p fi lehandl.tr. tpp: ftl-hdndlfr.cpp: ftlehandler.cpp: ntehd ndler ,cpp: Filehjndler
17、亡pp;filehndltr.cpp ffLthandlfrr-cpp fllhandlfr.cpp rtlehdiidler«cpp rilehdiidler *c.pp FiL«hdndlt?r. cpp 1fileh*ndl.tr. cpp fllhandlfr.cpp roothan vkrrual Hdchtne:/hor/shan;shlyan6ff ls思籽"L尚末安篆。您可1U使用以卞甜令安装:i dpt-y?t ln&tdll ilF roatshfinirtujL'H*chine: /honc/shan/shlyan6# ar
18、a.out ftlehandler.c- fIIchandter.cpp filthandler.h filrhindlerh- f rooi;han virtual mdctne:/horM?/shdn;stilydnh# |在函数:“t matn(j J中:32J2722734342744S8 aa tv)不建说便用履事苻串常凰 不津攻便卬从字符串常量旦 不裁议使甲从字符爭立量型 不建改佞用从字符宙堂量翌 不建仪使用从字符串常量劉 不建过便用从字符串為量刖 不理说便用从字符串书劉 不建议使用从字符爭常量型 不建议使用从字符审犠星型 不注&使用从爭符串甫虽£ 不建过便用从孑
19、符串高量劉 不建说使用从字符串料凰rchar*J 的转換h*wrttc-st rings fchar*的爲極 出心严的稱換 diar*-的转換 'ch>r* "的转按 rchir*J的转換 *char*H的鶉按 Ph打"的转换 Ph打1的转擾 -char*-的传換 H的转換 fchar*#的转援-kwrtte-strings '-Wwrtte*strIngs -klMf Lte- str Ings -k'wrtte-strtngs j -h'wrtte- strings J kwrttc strings WwrLie-strIng kw
20、i lle*str liqs -kwr Llt?*tr Ings -hiMri-tt-stri ngw _ hrttc strings之后运行程序,显示菜单,接着我们一个一个功能测试r oot sha ft- virtu al-machine: /heme/&fian/shiyan6# * / 白* out1 创立新文件J写文件A 读文件4复制文件5.杳看文件权限筑修改文件权限.九创立目录氛杏看当前路径与目录删除貝录切换目录1 建立文件链接,茕退岀选择功能1并输入文件名后,可以看到文件夹中确实创立了新文件创立轿文件2 .写文件3+读文件 氛覺制交件 仁直看文件权PE 氣修改交件杈艰 仁
21、创立目录8.育肯当前跨译勻目亍 沢删除目录 1"切换目录11薯宜文件诺接5退岀Input the Tilenanie xiexie二牧盘轆动番计算机主文件夹瓦桌面週图片硬文档也下載Jb音乐_交件系统shlyenti*十 Q接素3 rOUt#hcI#rrK:Jj' iwlj>#TiRC"kj> Jfllehand lerxpp>iexiefilehandler.h选择功能2之后、输入要写入的文件的文件名,再输入要写入的内容12a4 £ & 7891102n-文阿新件件文文文目当目 旷建文文制有改建看除 创写读创查删.t件件件录前录录
22、S写 限限径 权权路录件 曼 换立 yj建橹奇 xfexie (/shiya n6) - gedit l»打幵-保存 S < 拥消L J. xiexie X hello welcome!纯文本-制表符盍度:8tnput something you want to insert hello,welcome选择功能3之后,输入要读取的文件的文件名,在提示符=?之后的是文件内容创立鈴文件 i写文件 3读文件 。亘制文件 査看文件权限 G修改文件权限 7.创立目录 卩直香当前路径与曰录 乳删除同录动扌更目录11 .建立文件琏接 g退出i,nput the ftlename xt ext
23、e= = >Jiello f welcone选择功能4,依次输入旧文件名,新文件名仁创立新文件2.写文件 读文件轧复制文件5萱看文件权限6修改文件杈限 儿创立目录LJ hello X hello,welconeDt/晋音当前路径与目录9.删除目录1叭切换目录1建立文件笹接0退岀纯文本制表符宽度;8 <ISAinput the fiXenane qxtexleInput the filename i helloxiexie 只 ft (»/shyanti) - gedit獲翻开-L保存 fl xiexie X hello elconel纯文本制表苻竟度:8 <选择功能
24、5,调用命令Is查看权限1-创弹新文件写文件 乳读文件4毎制文件 杳石文件权限 d修改文件权很 儿创立目录叭杏看当前路枠与目录9 一删除冃录18 -七力揍日录11.17文件謎揺 e退出5 总用虽40-rwxr-xr'x-rw-rw-厂-rw* rw « r * «-rw-rw-厂一一 rw* rw-r -« rw-r-"厂pw -p =厂弋 froot shan shan shan shan root rootroot shan shn shan shan roo t r oo t1S86324526171 313戶月H月月月月1一11111 1
25、21:472121: 50M:482 ? ; 1 922 : 16行h列14 ISAa - out fi-lehandler + c ftlehandler.cpp fl-Xehandler * h ffLehiindlerh* helloxtexle选择功能6,输入文件名xiexie,并输入777之后再选择功能 5,可以看到test2的权限变成了 rwxrwxrwx丄2 *FA11-建立文件链接 乩退出6Input th亡 ftlenamextexieInput the mode, r=4,w=2fx=lfl777example:777is rwxrwxrwx一创崖新文件2,写文件3 读文件
26、 仁复制文件5 査看文件权限 氏修改文件杈限 九创理目录趴查看当前路径与目录Oil除目录18 切换目录11建文文件链接氛退出5总用量40-rwxrxr-x1rootroot197S8-rw*rw-r-1shanshan9-rw-rw-r- -1shanshan3245-rw-rw-r-1shdn5han2621*rw*rw*r-1shanshan2617-rw-r-r-1rootrootU-rwxrwxrwx1rootroot13月月月月月月月I1 1-a . outftiehandler.c filehandler.cpp filehandler.h filehandler.h- hello
27、xtexte选择功能7,输入新目录的名字ihiyanS创立新文件一 2写文件久谨文件4境制文件s 文件収嚴 密改文件収限7.as目录査看当前站径与F示丸删隐目录前切換目录1逹直文件幣捲乩退岀Input the foldernan shan.软空驱动養 计M机匠壬文件兵卫卓蓝E视頻画BB片0文皆 laTfiI音用_文件系统shanshlyanfffjrKhr twiiiifikhdndler.cpphdloaLoutiPmcLnI *inrhii -&idhI fwab |Filehandler.hMo*xiexie4删除目录10-切换曰录 建立文件社接 退出eyhome/shan/
28、163;hl¥an6选择功能8,查看当前目录创立新文件2.写文件苏读文件J豆制文件s + a«文件权限 6修改文件权限 7创立目录-亘盲当前路径与日录选择功能9,输入刚刚创立的目录的目录名,确实删除了选择功能10,切换到/home目录-曰1 =1 n 'j| 工 p is删除目录M.tJJ换目录I "建丈文件琏接B退岀I ieI Input the path you want to be/home/创立新文件芥写文件X读文件1 5复制文件I査看文件权限I G修改文件权限U 7 创立目录I s,fie当前路径与目录 沢删除目录I 3 切换目录1建立文件琏接卜
29、対-退出Ke?/home通过功能10切换会之前的shiyan6目录之后,选择功能11,创立filehandler.h的文件连接1创立新文件儿写文件儿读文件4复制文件 九查看文件权限 氣修改文件权限 厂创崖目录8. 育看当前路径与目9. 删除目录 leUHftS 录鮎退岀11Input old pathfilehandler.hinput new path linkmin / jiTijor 号科和开戲傑存a <撤消/->7亠 link MInclude <iostrean>tftncLude <strtng.h> tfinclude <Fstrean&
30、gt; include <unIstd*hn using nanespace std;Int shownenu() 显示菜单,在主函数中循环调用°逋回用户 选择的选顶Lnt option:创立新文件WcOUt«n2* 写文件W; cout« '3. 潼文件5:二、通过访问/proc文件系统来获取系统的当前信息程序代码:/F#in clude<>#i nclude<sys/> #include<> #include<> #include<sys/> #include<> #incl
31、ude<> #include<> #include <> void menu(void); void PIF(void); void SIF(void); void MIF(void); void BIF(void);int main() int choose;menu(); scanf("%d",&choose);while(choose!=0) switch(choose) case 1:PIF(); break;case 2:SIF(); break;case 3:MIF(); break;case 4:BIF(); bre
32、ak;没有该选项,请重新输入 *n");default:printf("* menu();scanf("%d",&choose); return 0;void menu(void) printf( "* n");printf( "*请输入 1-4*printf("*1.查看进程信息*n");printf("*2.查看系统信息*n");printf("*3.查看内存资源*n");printf("*4.查看模块信息*n");printf(&q
33、uot;*0.退出该系统 *亲爱的用户请输出你需要的操作*n");n"printf( "* n");printf( "*void PIF(void) char *pa = "/usr/bin/X11/top"char *arg4 = "top", NULL; if(fork()=0) printf("* 现在正在进入进程信息界面 * n");execvpa,arg;printf"ps: 在该界面你可以输入 k 进行杀死进程,输入 k 之后再输入进程编号 n"prin
34、tf"ps: 如果你想要退出该界面,可以输入 q 进行退出 n"else wait(0);void SIF(void) printf(" n");printf("* 系统信息如下 * n"); printf(" n");if(fork()=0) execlp("/bin/cat","cat","/proc/version",NULL);elsewait(0);printf(" n");printf("* 处理器信息如下 * *
35、 n");printf(" n");if(fork()=0) execlp("/bin/cat","cat","/proc/cpuinfo",NULL);else wait(0);void MIF(void) printf(" n");printf("* 有关内存的信息如下 * n");printf(" n");if(fork()=0) execlp("/bin/cat","cat","/proc
36、/meminfo",NULL);else wait(0);void BIF(void)printf(" n");n");printf("* 所有模块信息如下谨慎卸载 * printf(" n");char *path = "/bin/lsmod"char *argv4 = "lsmod", NULL;if(fork()=0) execv(path,argv);elsewait(O);printf(" n");n");char name1024;printf
37、("*请输入你所需要卸载的模块名: sca nf("%s", n ame);char *pa="/sbi n/rmmod"char *ar4="rmmod", name,NULL;if(fork()=0) execv(pa,ar);elsewait(0);printf("卸载成功! n");实验截图:/lin# -/shiyanrootglin-vtrtual-machinei/home/lin# gcc shiyan,c -o shiyan rootglin-virtualmmchin亡:/home “
38、鼻七“七首无七*无七占:*&* *占* * &七*七令* Z+亲爱的用户请输岀你需要的操作十"查看诳程信息g*w*2.查盲系统信息 *i*ii*it*i*r3. _ 杳有内存资 $去士*士*士*至*:* *占矗去*占去占土占矗*#4 香 看模块信恳 占*十占*去占 桃養*M*MM*k士*為*出j纟充 *古*吉*玄*畫隹*占张*責*丹 * * * *缶*圭*请输入4.进程信息:请愉入现在正在进人进稈伯息P> ®*":在该界血你可以耨入上进行杀址送程.辅入k之后曲输人进程编号(PID)号 p$:如史忖悲逕退岀该界面.可以输入q进行追出top -
39、21: S2: 32 up 40 pnn Tdsks: 19S total. t 1 ru Cpd(S):2.2!KuS ,Mem:1011926k toLdl±lZWsySwap:975Bbtik totalf,2 users, lead arage; 0,et>pnntng t 丄91 ileeptng,& stopped, e*0%fit, 56. AKtdp 0.0'f)r Ek®90716k used,12112k free tok used .9?5盹瞰 free .*3 Zombie财hl. O.G%St, 47ft52k buffers
40、 382022k cachedP1U USLRPR INI VLRT RES SHR S KCPU JtMLM TIMt:4 GDMMAhDISIS rootZ4&2 lln i254 lin 3087 lln2617 root 3iS4 root1 ro&t2 root3 root6 root7 root2a Zt) so zo2620202020 RT R IG o ci G « 0130Zm SdSm S&SFl 153m 17i32 24576 e e e e60piHlfllFl46S613T6 24640&472 36(112rt16H 3
41、7405)72 1340O 06i4S.63 Korg Oi 24 *6S tonptz 6:31x54 gnome-termlral0!11.72 gedttG: 32.99 witoa I sd0:OS.12 top 0:01,69 Init e:90,00 kchreadd e:06+18 ksoftirqd/e o:90.03 nLgratlon/e 0:06 + 02 watchdog/0杀死进程:I Swflp;IpID to97S86Bk total, kill; 333610k used tS7586Bk free.38Z?fik cachedFIDUSERPR NIVIRT
42、RES 5HRS 囂CPU EHTIME+ COMMAND60n41nR2n0202&2020151924S1 ?162301 +rao t I tnI tn root0 e0e72 521n S36r sXorg nautilus COFlplZ kworkcr/G:&;54.65 0:«7.72 026.95 0:00.85Z0+ lesam 1 i07*i 0VPVTjP -» < ?bus- * mLjTj_|丄唱-rm1011925ktotalj9e739ek Iused.134532k free,2680k buffersSWrlp:9T5
43、86Bktotal2616k Iu sed 97375?k free,40rtfl40k cflchedPIDUSERPRMIVIRTRESSHRsXCPU粕E桝TIME*CO NMAHO151Broot200207rt64nB504566.51;01.93XorgaeazlAn209S6Sn35h16HS43.60;15.£6gedttILn20allOSra6il»i36ns?S.4a:33.90conplj3254L5胡050Sn19m12ns22-00;63.B9gnone terninl1512rootze91S976Tea如s00.1QM.55trqbaldnc
44、e2542ILn2Ca267ft362B276fts00.4Q04.95tbus-ddenon3361root260174321372972R0&. 1000.56top1root266245762076134S5S0.29B1.71tnit2rootze00fi0S0o.eaao*ookthreadd3rootze3SE053e.e003- ?3ksoftirqd/9巨rootHTa&5e5e日.日390.03ntgratton/s7rootR700e0500.0erOS.ozwetchdog/0BrootR730eO50e.e00.01niqration/1:7root?e0aB500,000.Z1ksoftt rqd/1:1rootRT0000S00,00;03.ozwatchdoj/l12root0-20&eeS9飢03.eeepuset13root0-200BeS00.00:00.00khcLpsr14root2000eeS00.00;96* B0kdcvtinpfs系统信息:Linux verston 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《食品工程原理二》2021-2022学年第一学期期末试卷
- 石河子大学《现代人工智能技术》2023-2024学年期末试卷
- 石河子大学《家畜繁殖学》2022-2023学年第一学期期末试卷
- 沈阳理工大学《自动控制理论》2021-2022学年期末试卷
- 沈阳理工大学《建筑模型制作与工艺》2021-2022学年第一学期期末试卷
- 沈阳理工大学《电工与电子技术实验》2023-2024学年期末试卷
- 光伏代理商合同范本
- 沈阳理工大学《环境设计》2021-2022学年第一学期期末试卷
- 海事法院 合同解除 典型案例
- 合同到期的续签申请书
- MT-T 1201.1-2023 煤矿感知数据联网接入规范 第1部分:安全监控
- 胎盘早剥应急预案演练脚本
- 四川省绵阳市某中学自主招生物理试卷(含答案)
- 2023年湖南省中小学教师系列专业技术职称职务评审表
- 我要的是葫芦教学设计万冬霞(五篇)
- 常见地质灾害及其自救方法演示文稿
- 临战转换措施
- 氧化还原反应电化学基础
- GB/T 5269-1999传动及输送用双节距精密滚子链和链轮
- GB/T 30790.8-2014色漆和清漆防护涂料体系对钢结构的防腐蚀保护第8部分:新建和维护技术规格书的制定
- GB/T 25217.4-2019冲击地压测定、监测与防治方法第4部分:微震监测方法
评论
0/150
提交评论