Linux高级编程基础——文件系统编程之文件描述符

文件系统编程之文件描述符——实验题

/*编写代码,完成以下功能: 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); 如果不调用这个,光标就在文件的末尾,这样就没有办法读出来这个文件中的内容,
*/

猜你喜欢

转载自blog.csdn.net/qq_40663274/article/details/83904069