




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、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文件系统来获取系统的当前信息,包括:(
2、1)进程信息。包括:进程名称、运行状态、PID、优先级、内存使用量。可结束任一进程。(2)系统信息。包括:处理器信息(CPU名称、CPU频率、CPU类型、缓存大小),操作系统信息(系统类型、系统版本、GCC编译版本)。(3)内存资源。包括:内存和缓冲区(内核使用情况(已用、剩余、中共)、交换区使用情况(已用、剩余、中共),CPU使用率(各个核的使用率)。(4)模块信息。包括:模块名称、内存使用、使用次数。可卸载任一模块。一、利用Linux有关系统调用函数编写一个简单的文件管理工具程序代码:#include <iostream>#include <>#include &l
3、t;fstream>#include <>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" c
4、out<<"7.创建目录n" 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; ofs
5、tream of; ( (); if (!of) cerr<<"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) ce
6、rr<<"open fail"<<endl; 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<<
7、;"=>"<<buffer<<endl; ();void 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,10
8、0); (); /*将buffer中的内容写入新文件*/ string ofilename, msg; cout<<"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) /在子进程中执行
9、路径为/command的程序,参数在argv中 int pid = fork(); if (pid = 0) if (execv(command, argv) = -1) cout<<"=>errorn" else sleep(1); /等待子进程执行完毕#include <iostream>#include ""using namespace std;int main() while (true) /keeping showing the menu int option; option = showmenu(); swit
10、ch(option) case 1: /创建新文件 createfile(); break; case 2: /写入 insert(); 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
11、; string mod; cout<<"input the filenamen" cin>>filename; 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" executec
12、ommand(path, argv); break; case 7: /创建目录 string foldername; cout<<"input the foldernamen" cin>>foldername; char f20; char * argv = "mkdir", strcpy(f, (), NULL; char * path = "/bin/mkdir" executecommand(path, argv); break; case 8: /查看当前路径 char * argv = "
13、pwd", NULL; char * path = "/bin/pwd" executecommand(path, argv); break; case 9: /切换目录 string foldername; cout<<"input the foldernamen" cin>>foldername; char f20; char * argv = "rm", strcpy(f, (), "-r", NULL; char * path = "/bin/rm" e
14、xecutecommand(path, argv); break; case 10: /切换目录 string dir; cout<<"input the path 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
15、old path n" cin>>oldpath; cout<<"input new pathn" cin>>newpath; char np30,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
16、; cout<<"n" 程序分为和两部分,主要功能保存在filehandler,h中,由showmenu()函数显示菜单,createfile()函数创建新文件,insert()函数写文件,readfile()函数读文件,copyfile()函数复制文件,executecommand()函数执行命令。filehandler.pp文件中,主函数为一个死循环,调用showmenu()函数显示菜单、获取用户选择的选项,之后通过switch匹配相应的函数。实验截图:之后运行程序,显示菜单,接着我们一个一个功能测试选择功能1并输入文件名后,可以看到文件夹中确实创建了新文件
17、选择功能2之后、输入要写入的文件的文件名,再输入要写入的内容选择功能3之后,输入要读取的文件的文件名,在提示符” =”之后的是文件内容选择功能4,依次输入旧文件名,新文件名选择功能5,调用命令ls查看权限选择功能6,输入文件名xiexie,并输入777之后再选择功能5,可以看到test2的权限变成了rwxrwxrwx选择功能7,输入新目录的名字选择功能8,查看当前目录选择功能9,输入刚刚创建的目录的目录名,确实删除了选择功能10,切换到/home目录通过功能10切换会之前的shiyan6目录之后,选择功能11,创建filehandler.h的文件连接二、通过访问/proc文件系统来获取系统的当
18、前信息程序代码:/F#include<>#include<sys/>#include<>#include<>#include<sys/>#include<>#include<>#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
19、);while(choose!=0) switch(choose) case 1:PIF();break;case 2:SIF();break;case 3:MIF();break;case 4:BIF();break;default:printf("*没有该选项,请重新输入*n");menu();scanf("%d",&choose);return 0;void menu(void) printf("* n");printf("*亲爱的用户请输出你需要的操作* n");printf("*1.查看
20、进程信息* n");printf("*2.查看系统信息* n");printf("*3.查看内存资源* n");printf("*4.查看模块信息* n");printf("*0.退出该系统* n");printf("* n");printf("*请输入1-4*n");void PIF(void) char *pa = "/usr/bin/X11/top"char *arg4 = "top", NULL;if(fork()=0
21、) printf("*现在正在进入进程信息界面* n");execv(pa,arg); printf("ps:在该界面你可以输入k进行杀死进程,输入k之后再输入进程编号PID号n"); printf("ps:如果你想要退出该界面,可以输入q进行退出 n");elsewait(0);void SIF(void) printf("- n");printf("* 系统信息如下 * n");printf("- n");if(fork()=0) execlp("/bin/ca
22、t","cat","/proc/version",NULL);elsewait(0);printf("- n");printf("* 处理器信息如下* * n");printf("- n");if(fork()=0) execlp("/bin/cat","cat","/proc/cpuinfo",NULL);elsewait(0);void MIF(void) printf("- n");printf("* 有关内存的信息如下* n");printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西职业技术学院《服装结构研究》2023-2024学年第二学期期末试卷
- 2025保安证考试模拟试卷及答案
- 哈尔滨幼儿师范高等专科学校《数据统计分析》2023-2024学年第一学期期末试卷
- 吉林省长春市榆树市2025年高中毕业班教学质量检测试题(二)物理试题含解析
- 湖北水利水电职业技术学院《定量遥感》2023-2024学年第二学期期末试卷
- 厦门软件职业技术学院《基础乐理与视唱》2023-2024学年第二学期期末试卷
- 2025年保安证专业化题及答案
- 陕晋青宁省 2025届高考历史全真模拟试题(含解析)
- 北京市北方交通大学附属中学2025届高三下学期第三次考试英语试题试卷含解析
- 上海海事大学《建筑结构软件与应用》2023-2024学年第二学期期末试卷
- 氯碱行业收益如何分析
- 尺寸不符回复报告
- 中华人民共和国护士管理办法
- 无机非金属材料课件
- 中医养生与身心健康课件
- 1、现代生物技术的概念、涵盖的领域
- 30题纪检监察位岗位常见面试问题含HR问题考察点及参考回答
- 重症肺炎护理查房课件文件
- 小儿发育迟缓护理查房课件
- 施耐德变频器说明书大全
- 部编版小学语文三年级语文下册第三单元集体备课教材分析解读
评论
0/150
提交评论