操作系统实验5文件系统:Linux文件管理

上传人:壹****1 文档编号:473451008 上传时间:2022-10-30 格式:DOC 页数:5 大小:41.50KB
返回 下载 相关 举报
操作系统实验5文件系统:Linux文件管理_第1页
第1页 / 共5页
操作系统实验5文件系统:Linux文件管理_第2页
第2页 / 共5页
操作系统实验5文件系统:Linux文件管理_第3页
第3页 / 共5页
操作系统实验5文件系统:Linux文件管理_第4页
第4页 / 共5页
操作系统实验5文件系统:Linux文件管理_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《操作系统实验5文件系统:Linux文件管理》由会员分享,可在线阅读,更多相关《操作系统实验5文件系统:Linux文件管理(5页珍藏版)》请在金锄头文库上搜索。

1、-实验 5 文件系统 :Linu*文件管理1实验目的1掌握 Linu*提供的文件系统调用的使用法;2熟悉文件和目录操作的系统调用用户接口;3了解操作系统文件系统的工作原理和工作式。2实验容1 利用 Linu*有关系统调用函数编写一个文件工具 filetools,要求具有以下功能:*0. 退出1. 创立新文件2. 写文件3. 读文件4. 复制文件5. 修改文件权限6. 查看文件权限7. 创立子目录8. 删除子目录9. 改变当前目录到指定目录10. 操作*代码:*include*include*include*include*include*include*include*includevoid

2、menu(void);void openfile(void);void writefile(void);void readfile(void);void copyfile(void);void chmd(void);void ckq*(void);void cjml(void);void scml(void);void ggml(void);void ylj(void);int main()int choose;int suliangjin=1;.z.-menu();scanf(%d,&choose);while(choose!=0)switch(choose)case 1:openfile(

3、);break;case 2:writefile();break;case 3:readfile();break;case 4:copyfile();break;case 5:chmd();break;case 6:ckq*();break;case 7:cjml();break;case 8:scml();break;case 9:ggml();break;case 10:ylj();break;menu();scanf(%d,&choose);return 0;void menu(void)printf(文件系统n);printf(1.创立新文件n);printf(2.写文件n);prin

4、tf(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_TRUNC|O_RDWR,0666)0)perror(open);else.z.-printf(open file:hileo.c %dn,fd)

5、;if(close(fd)0)perror(close);elseprintf(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)perror(open);elseprintf(open file:hileo.cif(size=write(fd,buf,len)0)perror(write);%dn,fd);elseprintf(Writ

6、e:%sn,buf);if(close(fd)0)perror(close);elseprintf(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);elseprintf(open file:hileo.c %dn,fd);lseek(fd,0,SEEK_SET);if(size=read(fd,b,10)0)perror(read);elseprintf(read from file:%sn,b)

7、;if(close(fd)0)perror(close);elseprintf(Close );void copyfile(void).z.-if(fork()=0)e*eclp(/bin/cp,cp,/tmp/hello.c,/tmp/he.c,NULL);elsewait(0);printf(将 hello.c 复制 he.c);void chmd(void)int a;printf(1.文件主可读可写可执行n);printf(2.文件主可读n);printf(3.文件主可写n);printf(4.文件主可执行n);printf(请输入您的选项n);scanf(%d,&a);switch(

8、a)case 1:chmod(/tmp/hello.c,S_IRW*U);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; case 4:chmod(/tmp/hello.c,S_I*USR);printf(ok!n);break; default:printf(您选择有误n);void ckq*(void)char *path=/bin/ls;char *argv4=ls,-l,NUL

9、L;if(fork()=0)e*ecv(path,argv);elsewait(0);void cjml(void)if(mkdir(/tmp/a,S_IRW*U)0)perror(Mkdir);elseprintf(创立成功n);void scml(void)if(rmdir(/tmp/a)0)perror(Rmdir);.z.-elseprintf(删除成功n);void ggml(void)if(chdir(/tmp/bc)0)perror(chdir);elseprintf(更改目录成功n);void ylj(void)if(link(hello.c,h.c)0)perror(Link

10、);elseprintf(建立硬连接n);翻开文件:写文件:读文件:复制文件:修改权限:查看权限:创立目录:删除目录:更改目录:硬连接:问题解决案:1. 在复制文件时用 e*eclp 函数,虽然有复制成功但是他就跳出整个程序,这就是一个缺陷。后来我在 e*eclp 前面加 if(fork)=0)就可以咯2. 硬连接不成功,老是抛出错误信息,后来发现原来是因为我的代码出错,还有我之前已经更改了目录所以就会经常报错3. 到现在还不知道为什么我读出来的是乱码情解决实验心得体会:通过这次实验掌握 Linu*提供的文件系统调用的使用法;熟悉文件和目录操作的调用用户接口,了解操作系统文件系统的工作原理和工作式。.z.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号