文件系统编程之操作文件属性
/编写程序实现以下功能: 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”的名字,
*/