操作系统实验5文件系统Linux文件管理.docx
- 文档编号:28203885
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:12
- 大小:212.07KB
操作系统实验5文件系统Linux文件管理.docx
《操作系统实验5文件系统Linux文件管理.docx》由会员分享,可在线阅读,更多相关《操作系统实验5文件系统Linux文件管理.docx(12页珍藏版)》请在冰豆网上搜索。
操作系统实验5文件系统Linux文件管理
操作系统实验5文件系统:
Linux文件管理
***********
代码:
#include
#include
#include
#include
#include
#include
#include
#include
voidmenu(void);
voidopenfile(void);
voidwritefile(void);
voidreadfile(void);
voidcopyfile(void);
voidchmd(void);
voidckqx(void);
voidcjml(void);
voidscml(void);
voidggml(void);
voidylj(void);
intmain()
{
intchoose;
intsuliangjin=1;
menu();
scanf("%d",&choose);
while(choose!
=0)
{
switch(choose)
{
case1:
openfile();break;
case2:
writefile();break;
case3:
readfile();break;
case4:
copyfile();break;
case5:
chmd();break;
case6:
ckqx();break;
case7:
cjml();break;
case8:
scml();break;
case9:
ggml();break;
case10:
ylj();break;
}
menu();
scanf("%d",&choose);
}
return0;
}
voidmenu(void)
{
printf("文件系统\n");
printf("1.创建新文件\n");
printf("2.写文件\n");
printf("3.读文件\n");
printf("4.复制文件\n");
printf("5.修改文件权限\n");
printf("6.查看文件权限\n");
printf("7.创建子目录\n");
printf("8.删除子目录\n");
printf("9.改变目前目录到指定目录\n");
printf("10.链接操作\n");
printf("0.退出\n");
printf("请输入您的选择...\n");
}
voidopenfile(void)
{
intfd;
if((fd=open("/tmp/hello.c",O_CREAT|O_TRUNC|O_RDWR,0666))<0)
perror("open");
else
printf("openfile:
hileo.c%d\n",fd);
if(close(fd)<0)
perror("close");
else
printf("Closehello.c\n");
}
voidwritefile(void)
{
intfd,size,len;
char*buf="Hello!
I'mwritingtothisfile!
";
len=strlen(buf);
if((fd=open("/tmp/hello.c",O_CREAT|O_TRUNC|O_RDWR,0666))<0)
perror("open");
else
printf("openfile:
hileo.c%d\n",fd);
if((size=write(fd,buf,len))<0)
perror("write");
else
printf("Write:
%s\n",buf);
if(close(fd)<0)
perror("close");
else
printf("Closehello.c\n");
}
voidreadfile(void)
{
intfd,size;
charb[10];
if((fd=open("/tmp/hello.c",O_CREAT|O_TRUNC|O_RDWR,0666))<0)
perror("open");
else
printf("openfile:
hileo.c%d\n",fd);
lseek(fd,0,SEEK_SET);
if((size=read(fd,b,10))<0)
perror("read");
else
printf("readfromfile:
%s\n",b);
if(close(fd)<0)
perror("close");
else
printf("Closehello.c\n");
}
voidcopyfile(void)
{
if(fork()==0)
execlp("/bin/cp","cp","/tmp/hello.c","/tmp/he.c",NULL);
else
wait(0);
printf("将hello.c复制he.c");
}
voidchmd(void)
{
inta;
printf("1.文件主可读可写可执行\n");
printf("2.文件主可读\n");
printf("3.文件主可写\n");
printf("4.文件主可执行\n");
printf("请输入您的选项\n");
scanf("%d",&a);
switch(a)
{
case1:
chmod("/tmp/hello.c",S_IRWXU);printf("ok!
\n");break;
case2:
chmod("/tmp/hello.c",S_IRUSR);printf("ok!
\n");break;
case3:
chmod("/tmp/hello.c",S_IWUSR);printf("ok!
\n");break;
case4:
chmod("/tmp/hello.c",S_IXUSR);printf("ok!
\n");break;
default:
printf("您选择有误\n");
}
}
voidckqx(void)
{
char*path="/bin/ls";
char*argv[4]={"ls","-l",NULL};
if(fork()==0)
execv(path,argv);
else
wait(0);
}
voidcjml(void)
{
if(mkdir("/tmp/a",S_IRWXU)<0)
perror("Mkdir");
else
printf("创建成功\n");
}
voidscml(void)
{
if(rmdir("/tmp/a")<0)
perror("Rmdir");
else
printf("删除成功\n");
}
voidggml(void)
{
if(chdir("/tmp/bc")<0)
perror("chdir");
else
printf("更改目录成功\n");
}
voidylj(void)
{
if(link("hello.c","h.c")<0)
perror("Link");
else
printf("建立硬连接\n");
}
打开文件:
写文件:
读文件:
复制文件:
修改权限:
查看权限:
创建目录:
删除目录:
更改目录:
硬连接:
问题解决方案:
1.在复制文件时用execlp函数,虽然有复制成功但是他就跳出整个程序,这就是一个缺陷。
后来我在execlp前面加if(fork)()==0)
就可以咯
2.硬连接不成功,老是抛出错误信息,后来发现原来是因为我的代码出错,还有我之前已经更改了目录所以就会经常报错
3.到现在还不知道为什么我读出来的是乱码情解决
实验心得体会:
通过这次实验掌握Linux提供的文件系统调用的使用方法;熟悉文件和目录操作的调用用户接口,了解操作系统文件系统的工作原理和工作方式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 文件系统 Linux 文件 管理