【Linux】文件系统之stat函数

【linuxC语言】stat函数 在Linux系统编程中,stat() 函数是一个非常重要的工具,用于获取文件的元数据信息。无论是在系统管理、文件处理还是应用开发中,都可能会用到 stat() 函数。通过调用 stat() 函数,可以获取文件的大小、权限、最后访问时间、最后修改时间等信息,这些信息对于程序的正确运行和文件管理至关重要。本文将探讨 stat() 函数的作用、用法以及其在Linux系统编程中的重要性。stat() 函数作为Linux系统编程中的重要组成部分,为程序员提供了一种方便快捷地获取文件信息的方法。 阅读详情
1、stat主要函数
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int stat(const char *path, struct stat *buf);
//在Linux中,可以利用stat()函数来获取一个文件的状态
//这个函数执行成功返回0,失败返回-1
//取得的文件状态存放在buf指针指向的struct stat结构提中
int fstat(int fd, struct stat *buf);
//fstat函数获得已在描述符上打开的文件的有关信息 
int lstat(const char *path, struct stat *buf);
//lstat函数类似于stat,但是当命名的文件是一个符号连接时
// lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息

2、认识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 */
};

3、判断文件各类操作

st_mode是用特征位来表示文件类型的,特征位的定义如下:

S_IFMT0170000文件类型的位遮罩
S_IFSOCK0140000socket
S_IFLNK0120000符号链接(symbolic link)
S_IFREG0100000一般文件
S_IFBLK0060000区块装置(block device)
S_IFDIR0040000目录
S_IFCHR0020000字符装置(character device)
S_IFIFO0010000先进先出(fifo)
S_ISUID0004000文件的(set user-id on execution)位
S_ISGID0002000文件的(set group-id on execution)位
S_ISVTX0001000文件的sticky位
S_IRWXU00700文件所有者的遮罩值(即所有权限值)
S_IRUSR00400文件所有者具可读取权限
S_IWUSR00200文件所有者具可写入权限
S_IXUSR00100文件所有者具可执行权限
S_IRWXG00070用户组的遮罩值(即所有权限值)
S_IRGRP00040用户组具可读取权限
S_IWGRP00020用户组具可写入权限
S_IXGRP00010用户组具可执行权限
S_IRWXO00007其他用户的遮罩值(即所有权限值)
S_IROTH00004其他用户具可读取权限
S_IWOTH00002其他用户具可写入权限
S_IXOTH00001其他用户具可执行权限

判断文件类型时,用对文件的st_mode的值与上面给出的值相与,再比较。

还有一种简单的方法,利用系统提供好的宏直接比较:

宏功能
S_ISLINGK(st_mode)判断是否位符号链接
S_ISREG(st_mode)是否为一般文件
S_ISDIR(st_mode)是否为目录
S_ISCHR(st_mode)是否位字符装置文件
S_ISBLK(s3e)是否先进先出
S_ISSOCK(st_mode)是否为socket
Linux文件编程(lseek函数和stat函数) 本篇文章来讲解lseek函数和stat函数,lseek函数主要用来设置文件偏移量,stat函数主要用来获取文件属性。本篇文章就讲解到这里,下篇文章我们继续讲解文件操作的内容。 阅读详情

相关推荐

Linux中stat函数和stat命令使用详解

stat函数和stat命令 linux文件里的【inode = index node】解释:要理解inode必须了解磁盘和【目录项】,inode实际是连接【目录项】和磁盘的中间物质。 图里的大圈代表硬件的磁盘,里面的小圈代表某个文件存储在磁盘上了。 【inode = index node】的node(承载node信息的结构体是:stat,stat的定义在后面 )里面有: 文件大小 文件的最后修改时间 文件的所属用户 文件的权限 硬链接计数(ls -l 显示出来的数字) 块位置:指定文件存储在磁盘的具体位置。 下图中的hello是个普通文件,hello.hard是hell

关于Linux下的stat()函数

关于Linux下的stat()函数的使用规则 文章目录一、stat()的组成二、具体使用1.简单的ls程序2.运行结果如下 一、stat()的组成 头文件 #include <sys/stat.h> #include <unistd.h> 定义函数: int stat(const char *file_name, struct stat *buf); 函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中 返回值: 执行成

weixin_51447909的博客 7739

从DDH到FastANI:原核生物分类黄金标准的进化史与技术对比

本文系统梳理了原核生物分类标准从DDH到FastANI的四次技术革命,详细解析了95%相似度阈值的科学依据及应用场景。通过对比DDH、16S rRNA、ANI和FastANI的技术特点与性能指标,为微生物研究者提供基因组分类的实战指南,并展望第三代测序时代的分类新挑战。

weixin_29275257的博客 412

【Linux基础】stat函数

buf :为传出参数,传出文件的解析结果,buf为struct stat*类型,需要进一步解析,获取到的文件属性信息,就记录在struct stat结构体中。pathname :为待解析文件的路径名,可以为绝对路径,也可以为相对路径。表示文件的类型和存取的权限,为16位整数。输出结果:查看text.x文件的大小。(1)stat获取文件的大小。(2)stat获取文件类型。

m0_56573171的博客 2854

UE5新手必看:Gameplay框架中的GameInstance与子系统实战指南(含蓝图配置)

本文为UE5新手提供了Gameplay框架中GameInstance与子系统的实战指南。文章深入解析了GameInstance作为全局数据中枢的核心作用与生命周期,并手把手演示了如何创建自定义GameInstance、构建模块化的子系统(如存档管理),以实现跨关卡的持久数据管理。指南旨在帮助开发者构建清晰、可维护的项目架构,解决数据管理混乱的常见痛点。

weixin_29015801的博客 574

[运营] ext4分区遇到“Structure needs cleaning”问题,怎么解决 - 结构需要清理

摘要:当ext4文件系统出现"Structure needs cleaning"错误时,表明存在元数据损坏。解决方法包括:1)检查系统日志确认错误;2)卸载受影响分区;3)使用fsck.ext4分步骤修复(先测试模式-n,再保守修复-p,严重损坏时用-y强制修复);4)检查修复结果;5)重新挂载。若数据丢失可尝试从lost+found恢复。建议定期备份、避免异常关机并定期检查文件系统,以防硬件故障导致类似问题。修复前务必备份重要数据。

Rudon滨海渔村的博客 1359

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

博途S7-1200与昆仑通态MCGS纯仿真联调实战指南

本文详细介绍了博途S7-1200与昆仑通态MCGS纯仿真联调的实战指南,包括环境搭建、配置步骤、通信桥接及故障排除。通过TIA Portal和MCGS Pro搭建的仿真环境,可实现80%以上的基础功能验证,适用于工业自动化学习和开发,大幅降低硬件投入成本。

weixin_26834815的博客 439

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

FairyGUI深度解析:Unity复杂UI开发的高效解决方案与性能优化

在Unity游戏和应用开发中,UI系统的性能与开发效率是核心挑战。原生UGUI的组件化模型在应对复杂、动态界面时,常面临Draw Call过高、层级管理臃肿的问题。其原理在于,每个UI元素对应一个GameObject,渲染合批受限于Transform层级与材质状态,易导致性能瓶颈。FairyGUI(FGUI)作为一种专业的第三方UI解决方案,其技术价值在于采用了截然不同的“舞台-显示对象”渲染模型。该模型通过内部轻量级对象管理与自主合批系统,实现了极高的运行时效率与Draw Call优化。在应用场景上,FG

weixin_31315567的博客 339

LVGL嵌入式GUI工程化架构与多窗口实践

嵌入式GUI开发中,LVGL作为轻量级图形库,其核心价值在于高效渲染与事件驱动机制。理解LVGL的对象树模型、资源管理机制(如RAW图像、静态字体)和屏幕生命周期,是构建稳定界面的基础。结合FreeRTOS等实时操作系统,可实现低功耗、高响应的交互体验。典型应用场景包括智能电表、HMI人机界面、工业控制面板等对内存敏感、需长期运行的设备。本文以微信式多窗口架构为范例,深入解析LVGL工程化落地的关键路径:分层目录结构、窗口模块封装、状态机式登录逻辑、TabView多页导航及图表/仪表盘动态可视化,覆盖从资源

weixin_36001279的博客 88

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

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

weixin_39849479的博客 981

粒子群优化与蚁群算法求解多旅行商问题

它要求在给定一组城市和旅行商之间的距离矩阵的情况下,找到一条最优的路径方案,使得所有旅行商可以分别从起始城市出发,途径其他城市,并最终回到起始城市,同时总旅行距离达到最小。这两种算法都是基于群体智能的优化算法,在求解组合优化问题时具有较好的性能表现。假设有n个城市需要被m个旅行商访问,城市间的距离由距离矩阵D表示,其中D(i,j)表示第i个城市到第j个城市的距离。粒子群优化算法是一种基于群体智能的优化算法,其中的粒子代表了潜在的解,并通过模拟粒子在解空间中的移动来搜索最优解。一、多旅行商问题建模。

m0_47037246的博客 553

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

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

weixin_39897505的博客 241

2023年全国职业院校技能大赛 网络系统管理服务模块 Linux部分讲解

网络系统管理,Linux,服务部署,Chinaskills,2023国赛

weixin_62926639的博客 1547

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

m0_53349772的博客 980

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

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

weixin_33895695的博客 495

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

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

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

weixin_30596735的博客 716

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系统编程】文件系统 目录和文件1

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

2401_86738532的博客 334

【Linux】文件系统

​ Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件我们用ls命令看起来是一样的,读写操作用起来也都是一样的,这是怎么做到的呢?4.找到空闲的(data block),要占几个就找几个,然后再块位图中把所占块对应的标志位置成1,把文件内容写入块里,并且把块的地址写入数据块指针里。

2301_79594905的博客 797

Linux下文件/目录操作的相关函数

Linux文件系统的相关知识(目录项等),一些文件和目录操作函数的介绍(如何通过函数实现对文件的更改)。关键词:stat、lstat、access、chmod、truncate、link、unlink、symlink、readlink、rename、getcwd、chdir、opendir、closedir、telldir、seekdir函数、特殊位权限位置、隐式回收、重定向、递归遍历

caiji0169的博客 1922

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

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

weixin_30449453的博客 159
上一篇: 【编程练习】最大连续数列和
下一篇: 【计算机网络】TCP协议之详解三次握手四次挥手过程
sofia_m
博客等级 码龄9年 190粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值