Linux文件系统调用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux文件系统调用
一、实验目的:
(1)掌握Linux提供的文件系统调用的使用方法。
(2)熟悉文件系统的系统调用用户接口。
(3)了解操作系统文件系统的工作原理和工作方式。
二、实验内容
编写一个文件工具filetools,使其具有以下功能:
0.退出
1.创建新文件
2.写文件
3.读文件
4.修改文件权限
5.查看当前文件权限并退出。
提示用户输入功能号,并根据用户输入的功能选择相应的功能。三、参考代码
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 128
int chmd()
{
int c;
mode_t mode=S_IWUSR;
printf("0.0700\n 1.0400\n 2.0200\n 3.0100\n");//还可以增加其他权限printf("Please input your choice(0-3):");
scanf("%d",&c);
switch(c)
{
case 0:chmod("file1",S_IRWXU);break;
case 1:chmod("file1",S_IRUSR);break;
case 2:chmod("file1",S_IWUSR);break;
case 3:chmod("file1",S_IXUSR);break;
default:printf("You have a wrong 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","-1","file1",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("Please input your choice(0-6):");
scanf("%d",&choice);
switch(choice)
{
case 0:close(fd);//关闭file1文件
exit(0);
case 1:
fd=open("file1",O_RDWR|O_TRUNC|O_CREAT,0750);//创建file1
if(fd==-1)
printf("File Create Failed!\n");
else
printf("fd=%d\n",fd); //显示fileID
case 2:
num=read(0,buffer,MAX);//从键盘里面读取最多128个字符
write(fd,buffer,num); //从读入的信息送到file1里去
break;
case 3:
/*把file1文件的内容在屏幕上输出*/
read(fd,buffer,MAX);
write(1,buffer,num);
break;
case 4:
chmd();
printf("Change mode success!\n");
break;
case 5:
execv(path,argv); //执行ls-l file1
break;
default:
printf("You have a wrong choice!\n");
}
}
}