文件系统---stat函数

Linux inode 软硬链接 stat系统调用 对《Unix/Linux》系统编程中关于inode文件索引节点,软硬链接,stat系统调用进行了总结 其中关于inode部分内容转载自网络链接 参考资料 1. 系统调用 在Linux操作系统中,进程以两种模式运行:内核模式和用户模式。在用户模式中进程的权限非常有限,不能执行任何需要特殊权限的操作,而这些需要特殊权限的操作只能在内核模式中执行。系统调用使得进程能够进入内核模式执行用户模式下不能执行的操作,如复刻子进程,修改执行映像,打开文件等操作。 系统调用必须由程序发出,用法与普通函数一样。每个系统调用函数 阅读详情

stat

stat函数主要用于获取文件的inode信息。
stat命令其实就是调用的stat函数。

stat中时间的辨析

这里写图片描述

  • atime(最近访问时间)
  • mtime(最近更改时间):指最近修改文件内容的时间
  • ctime(最近改动时间):指最近改动inode的时间

1)chmod 777 stat_1.txt stat之后发现ctime变了。改变了文件的权限,文件权限保存在inode里面。
这里写图片描述

2)vim stat_1.txt什么都不做,看一下退出。stat后发现atime变了。
这里写图片描述

3)echo "123456" >>stat_1.txt追加到stat_1.txt后发现mtime,ctime变了。文件内容变了mtime改变,文件大小变了ctime改变,文件大小保存在inode里面。
这里写图片描述

用法:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int stat(const char *path, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *path, struct stat *buf);

fstat函数获得已在描述符上打开的文件的有关信息。
lstat函数类似于stat,但是当命名的文件是一个符号连接时, lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。

函数说明: 通过path获取文件信息,并保存在buf所指的结构体stat中。

返回值: 执行成功则返回0,失败返回-1,错误代码存于errno。
stat结构体:


struct stat {
    dev_t     st_dev;     /* 文件的设备编号 */
    ino_t     st_ino;     /* inode number */
    mode_t    st_mode;    /* 文件的类型和存取权限 */
    nlink_t   st_nlink;   /* number of hard links */
    uid_t     st_uid;     /* user ID of owner */
    gid_t     st_gid;     /* group ID of owner */
    dev_t     st_rdev;    /* device ID (if special file) */
    off_t     st_size;    /* 文件字节数 */
    blksize_t st_blksize; /* blocksize for filesystem I/O */
    blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
    time_t    st_atime;   /* time of last access */
    time_t    st_mtime;   /* time of last modification */
    time_t    st_ctime;   /* time of last status change */
};

实例:

1)输出文件的大小。

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

int main(int argc, char* argv[])
{
        struct stat s_buf;
        if(argc < 2)
        {
                printf("./app filename\n");
                exit(1);
        }
        if(stat(argv[1], &s_buf) < 0)
        {
                perror("stat");
                exit(1);
        }
        printf("%s\t%d\n", argv[1], s_buf.st_size);
        return 0;
}

这里写图片描述

【雕爷学编程】MicroPython手册之文件系统操作函数 uos.stat(path) 请注意,在使用 uos.stat(path) 函数时,需要确保指定的路径和文件名/目录名是有效的,并注意路径的格式(例如,使用正斜杠或反斜杠作为路径分隔符)。通过访问返回的元组中的特定索引,我们可以提取文件的大小和修改时间,并进行相应的操作。当需要显示或记录一个文件或目录的状态信息时,可以使用uos.stat(path)函数来获取相关信息,并打印或写入到文件中,从而提高数据的可视性和便利性。它基于CPython的os.stat()函数,但只支持一个必需的参数path,表示要获取状态信息的文件或目录的路径。 阅读详情

相关推荐

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 444

72-文件IO:目录项和inode & stat、lstat函数

1、目录项和inode 一个文件主要由两部分组成: dentry,目录项,包括文件名和inode号 inode:本质结构体;存储文件的属性信息,如:权限、类型、大小、时间、用户、盘快位置()…也叫做文件属性管理结构,大多数的inode都存储在磁盘上。(少量常用、近期使用的inode会被缓存到内存中) 给文件创建硬链接: inode是一样的,但是目录项是不一样的 删除文件: 就是删除inode,去掉一个目录项,但是数据其实还是在硬盘上,以后会覆盖掉。 2、stat、lstat函数 查看文件信息:

Edward_LF的博客 603

【NLP】文献翻译4——CH-SIMS:中文多模态情感分析数据集与细粒度的模态注释

CH-SIMS: A Chinese Multimodal Sentiment Analysis Dataset with Fine-grained Annotations of Modality摘要1. 介绍2. 相关工作2.1 多模态数据集2.2 多模态情感分析2.3 多任务学习3. CH-SIMS 数据集3.1 数据获取3.2 标注3.3 特征提取4. 多模式多任务学习框架4.1 单模态子网4.2 特征融合网络4.3 优化目标5. 实验5.1 基准5.2 实验的细节5.3 结果和讨论5.3.1 与

YoungSeng's Blog 1万+

Linux命令之stat命令、inode内容--ctime,mtime,atime的区别

#1. [root@localhost tmp]# stat 1.txt    File: `1.txt'   Size: 8               Blocks: 8          IO Block: 4096   regular file Device: 802h/2050d      Inode: 196617      Links: 1 Access: (0644/-rw

liuzx32的专栏 2697

告别系统迁移蓝屏!用Intel RST驱动搞定11代酷睿装Win11的硬盘识别难题

本文详细介绍了如何通过Intel RST驱动解决11代酷睿处理器在安装Win11时遇到的硬盘识别问题。针对VMD技术导致的系统迁移蓝屏错误,提供了从驱动下载、PE环境创建到驱动注入的完整解决方案,帮助用户顺利完成系统升级或迁移。

weixin_31309419的博客 576

手把手教你 Ubuntu 24.04 离线安装 Ollama

本文介绍 Ubuntu 下离线安装 Ollama 并使用 Ollama 部署 llama3.1-70b 大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1018

深入解析文件系统原理(inode,软硬链接区别)

深入解析文件系统原理(inode,软硬链接区别)

共产主义接班人 1912

【PyTorch项目实战】之ResNet系列:resnet18、resnet34、resnet50、resnet101、resnet152

ResNet (Residual Network) :是一种深度卷积神经网络(CNN)架构,其核心思想是引入残差学习(Residual Learning)机制,通过跳跃连接(skip connections)来解决深层网络训练中的退化问题。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 6372

linux文件的inode,Linux文件系统iNode及stat命令

什么是iNode在Unix/Linux系统中,表面上,用户通过文件名,打开文件,实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。储存文件元信息(文件的创建者、文件的创建日期、文件的大小等)的区域就叫做inode,中文译名为"索引节点"。怎么查看iNodes...

weixin_26824299的博客 566

华为OD机试真题 新系统2026-04-01 C语言 实现【空间占用计算】

员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。

MISAYAONE的博客 229

RK3568 上C图像camera图像采集应用实例(二)

本文探索rk3568上实现C语言的 通过C v4l2 接口 采集图像 ,刷屏控制 drm的显示camera图像中 实现camera preview 预览 的实践和探索。

luoshanxuli2010的专栏 759

5.Linux文件系统相关函数stat

stat函数原型: int stat(const char* pathname, struct stat* buf); pathname: 目标文件的路径 buf: struct stat结构体指针,用来保存返回的文件信息 返回值: 0表示执行成功,否则失败。失败后会改写 errno 这个全局变量,可以使用 perror 这个函数打印失败的原因。 struct stat结构体: struct s...

u012086173的博客 252

一文讲透 SAP VDM 命名里的前缀与后缀:看懂 I_、C_、A_,把 CDS 视图栈搭得又稳又好用

SAP S/4HANA 的 CDS 视图命名规范解析 摘要:本文详细解析 SAP S/4HANA 中 CDS 视图的 VDM 命名规范。通过前缀(如 I_、C_、R_)区分视图层级,后缀标记附加角色,结合 @VDM.viewType 注解形成完整语义体系。I_作为稳定接口层,C_面向特定场景裁剪,R_限定应用域内复用,A_提供远程 API 接口。命名规范使团队能快速识别视图用途、依赖关系和扩展边界,确保模型长期可维护性。文章结合制造业物料主数据、Fiori 应用等实际案例,说明如何通过规范命名构建清晰的视图

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

Linux系统函数之文件系统管理---stat函数

本文转载自https://blog.youkuaiyun.com/qq_40839779/article/details/82789217 Linux系统函数之文件系统管理(二) stat函数 ​ 作用:获取文件信息 ​ 头文件:include <sys/types.h> #include <sys/stat.h> #include <unistd.h> ​ 函数原型:int stat

KID__77的博客 309

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

cp无法获取文件状态stat_Linux系统编程之文件系统和stat函数「62章节」

Linux学习中,每天学习一点点,你就是下一个Linux专家一、Linux系统编程之文件系统文件系统需要了解相关概念:inode,dentry,数据存储,文件系统Inode:其本质为结构体,存储文件的属性信息,如权限,属性,时间,块位置....,也叫作文件属性管理结构如下是文件和Inode和磁盘的存储关系:dentry,inode和磁盘之间的关系备注:磁盘空间不会被删除,格式化磁盘数据也无法删除,...

weixin_39849479的博客 981

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Linux】文件系统之stat函数

1、stat主要函数 #include &lt;sys/types.h&gt; #include &lt;sys/stat.h&gt; #include &lt;unistd.h&gt; int stat(const char *path, struct stat *buf); //在Linux中,可以利用stat()函数来获取一个文件的状态 //这个函数执行成功返回0,失败返回-1 //取得...

sofia_m的博客 1031

linux errno变量头文件_Linux系统编程之文件系统和stat函数「62章节」

Linux学习中,每天学习一点点,你就是下一个Linux专家一、Linux系统编程之文件系统文件系统需要了解相关概念:inode,dentry,数据存储,文件系统Inode:其本质为结构体,存储文件的属性信息,如权限,属性,时间,块位置....,也叫作文件属性管理结构如下是文件和Inode和磁盘的存储关系:dentry,inode和磁盘之间的关系备注:磁盘空间不会被删除,格式化磁盘数据也无法删除,...

weixin_39897505的博客 241

Linux高并发服务器开发 第十三天(文件系统概念 stat/lstat truncate link/unlink 目录操作函数(opendir/closedir/readdir))

硬链接计数为0 (没有 dentry对应) 的文件仍不会马上被释放。要等到所有打开该文件的进程运行结束,没有任何进程使用该文件,此时,系统择机释放该文件。- 一组规则,规定对文件的存储及读取的方式、方法。-vi具有穿透性,读取的是mk.soft指向的文件内容,而readlink读取的是mk.soft本身的内容。- 程序运行结束,打开的文件、申请的内存空间,会被系统自动释放。- 大多数的inode保存在磁盘中,少量常用、进期使用的inode保存内存中。- 调用unlink,只是让文件具备了被释放的条件。

m0_53349772的博客 980

133 Linux 系统编程10 ,文件系统,inode,dentry,stat函数,lstat函数,access函数,chmod函数,truncate 函数,link函数,unlink函数,隐式回收

其本质为结构体,存储文件的属性信息。如:link("../abc/a.c", "../ioc/b.c")若a.c,b.c都对, 但abc,ioc目录不存在也会失败。if(S_ISREG (st_mode)) //-----为真,表示普通文件。if(S_ISDIR (st_mode)) //-----为真,表示目录文件。if(( st_mode & S_IFMT) == S_IFREG)//-----为真,表示普通文件。

hunandede的博客 1058

linux文件系统中i节点和stat函数/命令

一、概述 unix系统中,每打开一个文件,内核会使用三种数据结构来表示这个文件:进程表、v节点和i节点。 linux只保留了unix中的i节点来维护打开的文件; 二、i节点和struct stat结构体 linux的i节点信息存储在struct stat结构体中,可以通过man 2 stat来查看这个结构体的内容,如下: struct stat { dev_t st_dev; /* ID of device containing fil

weixin_39270987的博客 1209

linux文件系统open,read,lseek,stat,mmap函数介绍

函数open(),create()介绍 函数原型: int open(const char* pathname, int falgs); int create(const char* pathname, int falgs); int open(const char* pathname, int flags, mode_t mode); int create(const char* pathna...

qq_41093957的博客 541

从ls -l到stat函数:深入Linux文件系统元数据获取与格式化

在Linux系统编程中,文件元数据管理是理解操作系统如何组织和管理文件的基础。其核心原理是通过文件系统提供的inode结构,存储文件的类型、权限、所有者、大小和时间戳等关键信息。stat函数族(包括stat、lstat和fstat)作为系统调用,允许开发者直接从内核获取这些原始元数据,这是实现文件操作和系统监控的技术基石。通过解析stat返回的结构体,并结合getpwuid、getgrgid等函数进行ID到名称的映射,以及使用localtime和strftime进行时间格式化,可以构建出强大的文件信息处理工

weixin_33895695的博客 495

与 stat 函数相比,statfs 函数有什么不同?

【代码】与 stat 函数相比,statfs 函数有什么不同?

luotuo28的博客 968

linux xfs文件系统无法用readdir获取dirent文件类型d_type则用stat获取暨stat函数讲解

linux stat函数讲解 stat函数讲解 表头文件:    #include              #include 定义函数:    int stat(const char *file_name, struct stat *buf); 函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中 返回值:     

junjun5156的博客 2342

Linux文件系统探秘:用stat、fstat、lstat函数手把手教你读懂文件的‘身份证’

本文深入解析Linux文件系统中的`struct stat`结构体,通过`stat`、`fstat`和`lstat`函数详解如何获取和解读文件的元数据信息。文章包含实际代码示例,帮助开发者掌握文件类型判断、权限解析以及时间戳处理等核心技能,是理解Linux文件系统底层机制的实用指南。

weixin_30596735的博客 716

【Linux系统编程】文件系统 目录和文件1

该函数是获取文件属性的一个函数,这个函数会将pathname下的文件上的属性放置到statbuf你的结构体指针上。st_dev 表示包含文件所在的设备st_ino 表示一个文件的iode号inode号是什么?inode号表示的是一个文件的索引节点,然后文件系统通过这个inode号来索引找到这个文件,然后就相当于是一个文件的身份证st_mode 表示一个文件的权限st_nlink 表示一个文件的硬链接硬链接是什么?

2401_86738532的博客 334
上一篇: 文件系统---认识ext2文件系统
下一篇: exec族函数
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值