《文件系统:Linux文件管理.pdf》由会员分享,可在线阅读,更多相关《文件系统:Linux文件管理.pdf(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、K2MG-E专业技术人员绩效管理与业务能力提升练习与答案 1 实验 5 文件系统:Linux 文件管理 1实验目的(1)掌握 Linux 提供的文件系统调用的使用方法;(2)熟悉文件和目录操作的系统调用用户接口;(3)了解操作系统文件系统的工作原理和工作方式。2实验内容(1)利用 Linux 有关系统调用函数编写一个文件工具 filetools,要求具有下列功能:*0.退出 1.创建新文件 2.写文件 3.读文件 4.复制文件 5.修改文件权限 6.查看文件权限 7.创建子目录 8.删除子目录 9.改变当前目录到指定目录 10.链接操作*代码:#include#include#include#
2、include#include#include#include#include void menu(void);void openfile(void);void writefile(void);void readfile(void);void copyfile(void);void chmd(void);void ckqx(void);void cjml(void);void scml(void);void ggml(void);void ylj(void);int main()int choose;int suliangjin=1;menu();scanf(%d,&choose);K2MG-
3、E专业技术人员绩效管理与业务能力提升练习与答案 2 while(choose!=0)switch(choose)case 1:openfile();break;case 2:writefile();break;case 3:readfile();break;case 4:copyfile();break;case 5:chmd();break;case 6:ckqx();break;case 7:cjml();break;case 8:scml();break;case 9:ggml();break;case 10:ylj();break;menu();scanf(%d,&choose);re
4、turn 0;void menu(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);void openfile(void)int fd;if(fd=open(/tmp/hello.c,O_CREAT|O
5、_TRUNC|O_RDWR,0666)0)perror(open);else printf(open file:hileo.c%dn,fd);if(close(fd)0)perror(close);K2MG-E专业技术人员绩效管理与业务能力提升练习与答案 3 else printf(Close );void writefile(void)int fd,size,len;char*buf=Hello!Im writing to this file!;len=strlen(buf);if(fd=open(/tmp/hello.c,O_CREAT|O_TRUNC|O_RDWR,0666)0)perr
6、or(open);else printf(open file:hileo.c%dn,fd);if(size=write(fd,buf,len)0)perror(write);else printf(Write:%sn,buf);if(close(fd)0)perror(close);else printf(Close hello.c n);void readfile(void)int fd,size;char b10;if(fd=open(/tmp/hello.c,O_CREAT|O_TRUNC|O_RDWR,0666)0)perror(open);else printf(open file:
7、hileo.c%dn,fd);lseek(fd,0,SEEK_SET);if(size=read(fd,b,10)0)perror(read);else printf(read from file:%sn,b);if(close(fd)0)perror(close);else printf(Close );void copyfile(void)if(fork()=0)execlp(/bin/cp,cp,/tmp/hello.c,/tmp/he.c,NULL);else K2MG-E专业技术人员绩效管理与业务能力提升练习与答案 4 wait(0);printf(将 hello.c 复制 he.c
8、);void chmd(void)int a;printf(1.文件主可读可写可执行n);printf(2.文件主可读n);printf(3.文件主可写n);printf(4.文件主可执行n);printf(请输入您的选项n);scanf(%d,&a);switch(a)case 1:chmod(/tmp/hello.c,S_IRWXU);printf(ok!n);break;case 2:chmod(/tmp/hello.c,S_IRUSR);printf(ok!n);break;case 3:chmod(/tmp/hello.c,S_IWUSR);printf(ok!n);break;ca
9、se 4:chmod(/tmp/hello.c,S_IXUSR);printf(ok!n);break;default:printf(您选择有误n);void ckqx(void)char*path=/bin/ls;char*argv4=ls,-l,NULL;if(fork()=0)execv(path,argv);else wait(0);void cjml(void)if(mkdir(/tmp/a,S_IRWXU)0)perror(Mkdir);else printf(创建成功n);void scml(void)if(rmdir(/tmp/a)0)perror(Rmdir);else pr
10、intf(删除成功n);K2MG-E专业技术人员绩效管理与业务能力提升练习与答案 5 void ggml(void)if(chdir(/tmp/bc)0)perror(chdir);else printf(更改目录成功n);void ylj(void)if(link(hello.c,h.c)0)perror(Link);else printf(建立硬连接n);打开文件:写文件:读文件:复制文件:修改权限:查看权限:创建目录:删除目录:更改目录:硬连接:问题解决方案:1.在复制文件时用 execlp 函数,虽然有复制成功但是他就跳出整个程序,这就是一个缺陷。后来我在 execlp 前面加 if(fork)()=0)就可以咯 2.硬连接不成功,老是抛出错误信息,后来发现原来是因为我的代码出错,还有我之前已经更改了目录所以就会经常报错 3.到现在还不知道为什么我读出来的是乱码情解决 K2MG-E专业技术人员绩效管理与业务能力提升练习与答案 6 实验心得体会:通过这次实验掌握 Linux 提供的文件系统调用的使用方法;熟悉文件和目录操作的调用用户接口,了解操作系统文件系统的工作原理和工作方式。世上没有一件工作不辛苦,没有一处人事不复杂。不要随意发脾气,谁都不欠你的