linux文件系统实验原理,操作系统实验5文件系统_Linux文件管理

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

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

2、e #include #include #include #include #include #include void menu(void); void openfile(void); voidwritefile(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; .。

3、专业 .专注. . menu(); scanf(%d, 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。

4、(%d, 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(v。

5、oid) 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 ); voidwritefile(void) int fd,size,len; char *buf=Hello!Im writing to this file!; len=strlen(buf); if(fd=open(/tmp/hello.。

6、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 ); void readfile(void) int fd,size; char b10; if(fd=open(/tmp/hello.c,O_CREAT|O_TRUNC。

7、|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,N。

8、ULL); 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, 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; .专。

9、业 .专注. . 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(M。

10、kdir); 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); .专业 .专注. . 打开文件 : 写文件 : 读文件 : 复制文件 : .专业 .。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值