当前位置: 首页 > news >正文

飞凌嵌入式ElfBoard-获取文件的状态信息之fstat

fstat函数用来获取已经打开的文件描述符相关的文件状态信息。

1.头文件

#include <sys/stat.h>

2.函数原型

int fstat(int fd, struct stat *statbuf);

3.参数

fd:文件描述符,表示已打开的文件。

statbuf:指向 struct stat 结构的指针,用于存储文件的状态信息。

4.返回值

若成功返回0,失败返回-1

5.示例:(使用fstat获取文件状态信息

#include <stdio.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <time.h>

#include <unistd.h>

void print_time(const char *label, time_t time) {

struct tm *tm_info;

char buffer[26];

tm_info = localtime(&time);

strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);

printf("%s: %s\n", label, buffer);

}

int main() {

int fd = open("example.txt", O_RDONLY); // 打开文件,获取文件描述符

if (fd < 0) {

perror("open");

return 1;

}

struct stat file_info;

if (fstat(fd, &file_info) < 0) { // 使用 fstat 获取文件状态信息

perror("fstat");

close(fd);

return 1;

}

// (1) 获取文件的 inode 节点编号和文件大小

printf("Inode number: %ld\n", (long)file_info.st_ino);

printf("File size: %ld bytes\n", (long)file_info.st_size);

// (2) 判断文件的其他用户权限

printf("Readable by others: %s\n", (file_info.st_mode & S_IROTH) ? "Yes" : "No");

printf("Writable by others: %s\n", (file_info.st_mode & S_IWOTH) ? "Yes" : "No");

// (3) 获取文件的时间属性

print_time("Last access time", file_info.st_atime);

print_time("Last modification time", file_info.st_mtime);

print_time("Last status change time", file_info.st_ctime);

close(fd); // 关闭文件描述符

return 0;

6.测试结果

Inode number: 5255757

File size: 17 bytes

Readable by others: Yes

Writable by others: No

Last access time: 2024-08-09 14:12:11

Last modification time: 2024-08-09 14:12:11

Last status change time: 2024-08-09 14:12:11

http://www.cnnetsun.cn/news/4770.html

相关文章:

  • 你不知道的医学图像配准秘密:基于C++的多模态融合精度提升80%方法
  • 【游戏AI行为树序列化终极方案】:C#高性能序列化技术全解析
  • PHP构建合规医疗系统实战(从加密到审计的完整方案)
  • Wan2.2-T2V-A14B支持镜头语言控制了吗?最新功能揭晓
  • 金融机构不愿公开的风控技术:R语言Copula建模实战案例(仅此一份)
  • Wan2.2-T2V-A14B如何实现口型与语音的同步生成?
  • 把 ABAP 内存讲明白:从 SAP 系统到 Internal Session 的五层记忆地图
  • Wan2.2-T2V-A14B在文旅行业的应用:让景点故事‘活’起来
  • Wan2.2-T2V-A14B如何处理多人物同框互动场景?
  • Wan2.2-T2V-A14B模型对艺术风格迁移的支持能力测试
  • 学生管理|基于springboot + vue学生管理系统(源码+数据库+文档)
  • 《Unreal 对 C++ 做了什么》系列 01 UObject 的基石:GENERATED_BODY()`宏的魔力
  • 终极OMPL指南:快速掌握开源运动规划库的完整教程
  • 零成本创业利器,本地生活服务源码系统助你轻松搭建起属于你的同城小程序
  • 如何利用本地生活服务系统提升营收与品牌
  • JDK 发行版
  • 3步搞定!siglip_so400m_patch14_384模型部署全攻略
  • 【普中STM32F1xx开发攻略--标准库版】-- 第 21 章 USART 串口通信
  • AI时代的工业数据心脏:如何选择真正面向未来的时序数据库?
  • 高效内存管理终极指南:告别电脑卡顿的完整方案
  • LevelDB终极指南:高性能键值存储的完整实践教程
  • 嵌入式开发场景下源代码防泄密方案—智能端口
  • 解密二进制分析神器BAP:从入门到精通的完整指南
  • PyTorch FSDP昇腾平台深度优化——千亿模型分布式训练架构与性能调优指南
  • 鸿蒙 + Electron:前端开发者切入鸿蒙生态的极简路径
  • 鸿蒙 Electron 进阶实战:集成鸿蒙原生 API 与跨端数据同步
  • 5分钟快速上手:Saladict桌面划词翻译工具的完整使用指南
  • 霍尼韦尔测厚仪模块6581200097
  • 站在 AI 奇点之上,技术决策者如何破局?腾讯云架构师峰会来了!
  • PageIndex:突破传统检索边界的革命性文档索引系统