1. 实验目的
● 熟悉和掌握Unix/Linux环境下的常用文件/目录的常用System Call;
● 了解Unix/Linux文件系统结构,特殊文件的作用和操作方法;
2. 实验要求
● 必要的文档和注释;(简单要求如下)
3. 实验内容
编写一个文件工具filetools,使其具有以下功能:
******************************
1. 退出
2. 创建新文件
3. 写文件
4. 读文件
6. 查看当前文件权限并退出
******************************
提示用户输入功能号,并根据用户输入的功能选择完成相应的功能。
程序:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<syslog.h>
#include<string.h>
#include<stdlib.h>
装卸过桥#define MAX 128
int chmd();
int chmd ()
{
int c;
mode_t mode=S_IWUSR;
printf(" 0. 所有用户读写执行\n 1. 所有用户只可读\n 2. 所有用户只可写 \n 3. 所有用户只可执行\n 4. 用户组读写执行\n 5. 用户组只可读\n 6. 用户组只可写\n 7. 用户组只可执行\n ");
printf("请选择0-7:");
scanf("%d",&c);
switch(c)
{
case 0: chmod("newfile",S_IRWXU);break;
case 1: chmod("newfile ",S_IRUSR);break;
case 2: chmod("newfile ",S_IWUSR);break;
case 3: chmod("newfile ",S_IXUSR);break;
case 4: chmod("newfile ", S_IRWXG);break;
case5: chmod("newfile ",S_IRGRP);break;
case6: chmod("newfile ",S_IWGRP);break;
case7: chmod("newfile ", S_IXGRP);break;
default:printf("error choice!\n");
}
return(0);
}
main()
{
int fd;
int num;
int choice;
char buffer[MAX];
struct stat buf;
char* path="/bin/ls";
char* argv[4]={"ls","-l","newfile",NULL};
彩铅芯 while(1)
{
printf("********************************\n");
printf("0. 退出\n");
printf("1. 创建新文件\n");
printf("2. 写文件\n");多任务手势
printf("3. 读文件\n");
printf("4. 修改文件权限\n");
printf("5. 查看当前文件的权限修改文件权限\n");
printf("********************************\n");
printf("请选择(0-5):");
scanf("%d",&choice);
switch(choice)
{
case 0:close(fd);
exit(0);
case 1:
fd=open("newfile",O_RDWR|O_TRUNC|O_CREAT,0750);
if(fd==-1)
printf("File Create Failed!\n");
else
printf("fd = %d\n",fd);
break;
case 2:
num=read(0,buffer,MAX);
write(fd,buffer,num);
break;
case 3:
募捐箱 read(fd,buffer,MAX);
write(1,buffer,num);
break;
case 4:
chmd ();
printf("成功改变格式!\n");
break;
case 5:
execv(path,argv);
break;
default:
printf("error choice!\n");紫砂饮水机
}
}
}
执行程序:
程序窗口
1. 创建新文件newfile
2. 写文件为hello world!
3. 读文件
4. 修改文件权限
5. 查看文件权限
4. 精轧管参考资料
● 教材第六章
● LINUX系统编程
5. 评分标准
● A——选做内容/必做内容功能完善,编程风格好,人机接口界面好;
● B——必做内容功能完善,完成部分选做内容,编程风格好,人机接口界面良好;
● C——完成必做内容,编程风格良好;
● D——能完成必做内容;
● E——未按时完成必做内容,或者抄袭(雷同者全部为E)。