Linux高级编程基础——文件系统编程之操作文件属性

文件系统编程之操作文件属性

/编写程序实现以下功能: 1.新建文件,设置文件权限屏蔽字为0; 2.建立该文件的硬链接文件,打印硬链接文件的inode节点号和文件大小; 3.建立该文件的软链接文件,打印软链接文件的inode节点号和文件大小; 打印软链接文件中的内容; 4.打印源文件的inode节点号,文件大小和链接数目; 5.调用unlink对源文件进行操作,打印源文件链接数目;/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>

int main()
   {
    umask(0);
    if (creat("wenjian2",S_IRWXU|S_IRWXG|S_IRWXO) < 0)  //创建一个名为“wenjain2”的文本文件,
                                                                                    //“S_IRWXU|S_IRWXG|S_IRWXO”给这个文件所有用户可读可写可执行的权限,
      { 
        perror ("creat");
        printf ("errno is : %d \n",errno);
      }
    else
      printf ("wenjian2 creat ok \n");

    if (link("wenjian2","wenjian3") < 0)  //创建文件“wenjian2”的一个 硬链接文件“wenjian3”
      {  
        perror ("link");
        printf ("errno is : %d \n",errno) ;
      } 
    else
      printf ("硬链接文件 创建成功\n ");

struct stat statwj,statwj1,statwj2;
    if (lstat("wenjian3",&statwj) < 0)  //获取硬链接文件“wenjian3”的属性,放在statwj结构体中,
        perror ("lstat");
    printf ("硬链接文件节点号 : %ld \n",statwj.st_ino);   //输出文件节点号
    printf ("硬链接文件大小 :%ld \n ",statwj.st_size);   //输出文件大小
    
    if (symlink ("wenjian2","wenjian4") < 0)  //创建文件“wenjian2”的一个 软 链接文件“wenjian4"”
      { 
         perror ("symlink");
         printf ("errno is : %d \n",errno);
      }
    printf ("软链接文件 创建成功 \n");
    
    lstat ("wenjian4",&statwj1);    //获取软连接文件“wenjian4”的属性,放在statwj1结构体中,
    char wj[10];
    if (readlink ("wenjian4",wj,1024) < 0)  //读取软连接文件“wenjian4” 它 本 身 的属性,放在wj数组中,
      {  
       perror("readlink");
       printf ("errno is : %d \n",errno); 
      }
    printf ("软链接文件节点号 :%ld \n",statwj1.st_ino);   //输出文件节点号
    printf ("软链接文件大小:%ld \n ",statwj1.st_size);   //输出文件大小
    printf ("软链接文件内容: %s \n",wj);  //输出文件里面存放的内容 ,,里面放的是源文件“wenjian2”的名字,


    if (unlink("wenjian4") < 0)   //删除软连接文件“wenjian4”
      { 
        perror ("unlink");
        printf ("errno is : %d",errno);
      }
    else 
        printf ("unlink is ok \n");
   
    if (stat("wenjian2",&statwj2) < 0)  //获取文件“"wenjian2”的属性,
        perror ("lstat");
    printf ("nlink is :%ld \n",statwj2.st_nlink); //输出该文件的链接文件数目,
    printf ("wenjian2文件节点号 :%ld \n",statwj2.st_ino);  //输出文件节点号


return 0; 
   }

/*
什么是硬链接,什么是软连接?
硬链接是独自的一个文件,但是软连接相当于原文件的一个快捷方式,硬链接和原来的文件没有什么区别,而且共享一个 inode(节点)号而软 链接不共享 inode,2.若原文件删除了,则该软连接则不可以访问,而硬连接则是可以的。(简单的说明,可能存在错误)
软连接文件里面存放的是什么?
里面放的是源文件“wenjian2”的名字,
*/

猜你喜欢

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