break;
}
cout<<"\n";
}
}
程序分为和两部分,主要功能保存在filehandler,h中,由showmenu()函数显示菜单,createfile()函数创建新文件,insert()函数写文件,readfile()函数读文件,copyfile()函数复制文件,executecommand()函数执行命令。
filehandler.pp文件中,主函数为一个死循环,调用showmenu()函数显示菜单、获取用户选择的选项,之后通过switch匹配相应的函数。
实验截图:
之后运行程序,显示菜单,接着我们一个一个功能测试
选择功能1并输入文件名后,可以看到文件夹中确实创建了新文件
选择功能2之后、输入要写入的文件的文件名,再输入要写入的内容
选择功能3之后,输入要读取的文件的文件名,在提示符”===》”之后的是文件内容
选择功能4,依次输入旧文件名,新文件名
选择功能5,调用命令ls查看权限
选择功能6,输入文件名xiexie,并输入777之后再选择功能5,可以看到test2的权限变成了rwxrwxrwx
选择功能7,输入新目录的名字
选择功能8,查看当前目录
选择功能9,输入刚刚创建的目录的目录名,确实删除了
选择功能10,切换到/home目录
通过功能10切换会之前的shiyan6目录之后,选择功能11,创建filehandler.h的文件连接
二、通过访问/proc文件系统来获取系统的当前信息
程序代码:
//F
#include<>
#include
#include<>
#include<>
#include
#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");
printf("*********亲爱的用户请输出你需要的操作*********\n");
printf("**************1.查看进程信息*****************\n");
printf("**************2.查看系统信息***************\n");
printf("**************3.查看内存资源**************\n");
printf("**************4.查看模块信息**************\n");
printf("**************0.退出该系统**************\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("***系统信息如下***\n");
printf("-------------------------------------\n");
if(fork()==0){
execlp("/bin/cat","cat","/proc/version",NULL);
}else{
wait(0);
}
printf("-------------------------------------\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");
}
}
实验截图:
进程信息:
杀死进程:
系统信息:
内存模块:
模块信息:
卸载模块:
卸载成功:
实验总结:
通过这次课程设计,让我明白如何利用Linux有关系统调用函数编写一个简单的文件管理工具,如何写程序通过访问/proc文件系统来获取系统的当前信息,虽然大一只学了C++,但是c与C++有很多相似之处,通过查看资料还是能搞明白。