实验 5 文件系统 :Linux 文件管理
1.实验目的
(1)掌握 Linux 提供的文件系统调用的使用方法;
(2)熟悉文件和目录操作的系统调用用户接口;
(3)了解操作系统文件系统的工作原理和工作方式
2实验内容
(1)  利用 Linux 有关系统调用函数编写一个文件工具 filetools,要求具有下列功能: ***********
0. 退出
1. 创建新文件
2写文件
3. 读文件
4.  复制文件
5. 修改文件权限
6.  看文件权限
7. 创建子目
8. 删除子目录
9.  改变当前目录到指定目录
10. 链接操作
***********
代码:
#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>
void 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 int
choose;
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;
caseprintf输出格式linux 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  %d\n",fd);
if(close(fd)<0)
perror("close");
else
printf("Close hello.c\n");
}
void  writefile(void)
{
int fd,size,len;
char *buf="Hello!I'm 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    %d\n",fd);
if((size=write(fd,buf,len))<0)
perror("write");
else
printf("Write:%s\n",buf);
if(close(fd)<0)
perror("close");
else
printf("Close hello.c  \n");
}
void readfile(void)
{
int fd,size;
char b[10];
if((fd=open("/tmp/hello.c",O_CREAT|O_TRUNC|O_RDWR,0666))<0) perror("open");
else
printf("open file:hileo.c  %d\n",fd);
lseek(fd,0,SEEK_SET);
if((size=read(fd,b,10))<0)
perror("read");
else
printf("read from file:%s\n",b);
if(close(fd)<0)
perror("close");
else
printf("Close hello.c\n");
}

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 *argv[4]={"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