已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验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#include#include#include#include#includevoid 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); 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); return 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_TRUNC|O_RDWR,0666)0) perror(open); else printf(open file:hileo.c %dn,fd); if(close(fd)0) perror(close); 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) perror(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: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 wait(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(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; case 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 printf(删除成功n);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)就可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州有轨电车有限责任公司校园招聘启动笔试历年参考题库附带答案详解
- 2025安徽泾县宣纸小镇有限公司招聘3人笔试历年参考题库附带答案详解
- 人民币跨境支付系统及业务流程解析
- 券商内控管理体系构建实践经验分享
- 随州高二语文试卷及答案
- 2025年小学音乐沪教版四年级上册国测模拟试卷及答案(三套)
- 2026年堤防渗流稳定分析合同
- 体育行业人才选拔策略与面试技巧
- 内部审计助理的审计工作压力管理与情绪调节技巧
- 内控审核员内控审核员职业生涯规划
- 矛盾纠纷多元化解工作方案
- 车辆转让协议书
- 食品加工企业会计核算流程
- 生物质燃料颗粒可行性研究报告
- 网络安全教师培训会议
- 【MOOC】《研究生英语科技论文写作》(北京科技大学)中国大学MOOC慕课答案
- 神话故事民间故事《后羿射日》绘本课件
- 屋架平房仓计算书
- 《安全阀培训》课件
- GB/T 32151.30-2024温室气体排放核算与报告要求第30部分:水运企业
- 大模型在医疗AI中的应用
评论
0/150
提交评论