四时宝库

程序员的知识宝库

Linux系统编程之文件系统和stat函数「62章节」

Linux学习中,每天学习一点点,你就是下一个Linux专家

一、Linux系统编程之文件系统

文件系统需要了解相关概念:inode,dentry,数据存储,文件系统

Inode:

其本质为结构体,存储文件的属性信息,如权限,属性,时间,块位置....,也叫作文件属性管理结构

如下是文件和Inode和磁盘的存储关系:

备注:磁盘空间不会被删除,格式化磁盘数据也无法删除,只能覆盖磁盘

Dentry:

Dentry一个文件名和一个inode,组合起来就是dentry,如上图

二、Stat函数

获取文件属性,(从Inode结构体中获取)

Int stat(const char *path, struct *buf);成功返回0;失败返回 -1设置errno 为恰当值。

参数1: 文件名

参数2:inode 结构体指针(传出参数)

文件属性将通过传出参数返回给调用者。

在 linux 输入 man stat 可以看到该函数的原型。

如下函数可以尝试看stat的用法

#include<unistd.h>

#include<stdlib.h>

#include<stdio.h>

#include<sys/stat.h>//需要引用此头文件

Int main(int argc, char *argv[]){

Strcut stat buf;

int ret = stat(argv[1], &buf);

If(ret == -1)

{

perror(“stat error”);

exit(1);

}

//如下打印stat各个属性,也可以获取其它文件属性

printf(“file size of=%ld\n”,buf.st_size); //获取文件大小

}

如下是struct stat的结构,可以通过上面的printf函数打印出来各个文件如下属性:

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接