文件系统编程之文件描述符——实验题
/*编写代码,完成以下功能: 1.创建新文件,该文件具有用户读写权限。 2.采用dup/dup2/fcntl复制一个新的文件描述符,通过新文件描述符向文件写入“class_name”字符串; 3.通过原有的文件描述符读取文件中的内容,并且打印显示;*/
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
int main()
{
int fd;
fd = open("wenjian.text",O_CREAT|O_RDWR,S_IRWXU); //创建一个名为“wenjain.text”的文本文件,
//“S_IRWXU”给这个文件可读可写可执行的权限,
//“fd”是创建这个文件成功后程序返回的文件描述符,相当于这个文件的名字
if (fd < 0) //判断创建是否成功
{
perror("open : ");
printf("errno is %d \n",errno);
}
else
printf("open ok \n");
int fd2;
fd2 = dup (fd); //复制一个新的文件描述符 ,相当于再次给这个文件起一个名字,通过两个名字都可以找到这个文件
int wnew;
wnew = write(fd2,"yidongerban_chenyang",22); //向这个文件中写入一个字符串“yidongerban_chenyang”
if (wnew != 22)
perror("write fd2");
else
printf ("write ok\n" );
lseek(fd,0,SEEK_SET); // "lseek"调节读写偏移量,通过这个“SEEK_SET”设置光标调节开始的位置为文件的开头
// “0”就是设置调节的位数为0,就是不移动,就是把光标放在文件开头
//《鼠标点在那个位置就会出现一个闪动的竖线,这个就是光标》
int fdread;
char file[22];
fdread = read(fd,file,22); //通过文件描述符读这个文件,并把读到的内容放在”file“这个数组中
printf ("read : %s \n",file); //打印这个数组”file“中的内容
close (fd); //关闭文件描述符
close (fd2);
return 0;
}
《
只是一个新手 ,如有任何错误之处请见谅并及时指出,感谢
》
/*
一:
fd2 和 fd 的区别:记着通过两个文件描述符都可以访问这个文件
二:
lseek(fd,0,SEEK_SET); 如果不调用这个,光标就在文件的末尾,这样就没有办法读出来这个文件中的内容,
*/