news 2026/6/23 20:11:29

飞凌嵌入式ElfBoard-文件的时间属性之utime

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
飞凌嵌入式ElfBoard-文件的时间属性之utime

设置文件的访问时间和修改时间(秒级别)。

1.头文件

#include <sys/types.h>

#include <utime.h>

2.函数原型

int utime(const char *filename, const struct utimbuf *times);

3.参数

filename:指向文件路径名的指针,指定要修改时间的文件。如果文件路径无效或者文件不存在,utime() 会返回错误。

times:指向 struct utimbuf 结构体的指针,该结构体包含两个字段,用于指定新的访问时间和修改时间。

这里介绍一下struct utimbuf结构体:

struct utimbuf {

time_t actime; /* 最后访问时间access time */

time_t modtime; /* 最后修改时间modification time */

};

4.返回值

成功返回 0 ,失败返回-1,并且会返回错误原因。

5.示例:(使用utime修改文件访问时间)

#include <stdio.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <utime.h>

#include <errno.h>

#include <string.h>

#include <time.h>

void update_file_time(const char *filename);

int main(){

const char *filename = "file_utime.txt";

int res = 0;

struct stat statbuf;

printf("File name: %s\n", filename);

if (stat(filename, &statbuf) == -1) {

if (errno == ENOENT) {

fprintf(stderr,"File does not exist: %s\n", filename);

} else {

perror("stat");

}

return EXIT_FAILURE;

}

update_file_time(filename);

return EXIT_SUCCESS;

}

void update_file_time(const char *filename) {

struct utimbuf new_times;

new_times.actime = time(NULL);

new_times.modtime = time(NULL);

if (utime(filename, &new_times) == -1) {

perror("utime");

exit(EXIT_FAILURE);

}

printf("File time updated successfully.\n");

}

先使用stat命令查看一下file_utime.txt时间戳:

$ stat file_utime.txt

File: file_utime.txt

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: 803h/2051d Inode: 5242954 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 1000/ elf) Gid: ( 1000/ elf)

Access: 2024-09-10 20:46:17.894084787 +0800

Modify: 2024-09-10 14:03:28.000000000 +0800

Change: 2024-09-10 14:03:28.393749310 +0800

Birth: 2024-09-10 14:00:57.882938108 +0800

运行utime_test命令,修改时间属性:

File name: file_utime.txt

File time updated successfully.

修改时间属性后再使用stat命令查看时间戳的变化:

$ stat file_utime.txt

File: file_utime.txt

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: 803h/2051d Inode: 5242954 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 1000/ elf) Gid: ( 1000/ forlinx)

Access: 2024-11-06 21:11:21.000000000 +0800

Modify: 2024-11-06 21:11:21.000000000 +0800

Change: 2024-11-06 21:11:21.526051882 +0800

Birth: 2024-09-10 14:00:57.882938108 +0800

执行完utime_test命令后,可以看到文件的访问时间(Access time)和文件修改时间(Modification time)发生了变化,改成系统当前时间了。我们并没有修改文件状态更改时间(Change time),然而它也跟着修改了,这是一种系统机制,在ctime中,记录着文件最后一次修改的时间,对于文件的任何修改包括时间属性的更新,都会更新ctime的时间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 18:43:47

还在手动查账单?Open-AutoGLM让你一键获取所有消费明细!

第一章&#xff1a;Open-AutoGLM账单查询的革命性突破传统账单查询系统长期受限于响应延迟、结构化解析困难以及多源数据整合复杂等问题。Open-AutoGLM的推出彻底改变了这一局面&#xff0c;通过融合大型语言模型与自动化工作流引擎&#xff0c;实现了对异构账单数据的智能理解…

作者头像 李华
网站建设 2026/6/23 2:59:21

LangFlow内存管理策略:会话历史与状态持久化设置

LangFlow内存管理策略&#xff1a;会话历史与状态持久化设置 在构建智能对话系统时&#xff0c;一个常见的痛点是&#xff1a;用户刚聊到一半&#xff0c;刷新页面后发现“你说的一切都消失了”。这种上下文断裂不仅破坏体验&#xff0c;也让复杂任务的连续推理变得不可能。随着…

作者头像 李华
网站建设 2026/6/22 14:44:38

SpringBoot+Vue 扶贫助农系统管理平台源码【适合毕设/课设/学习】Java+MySQL

摘要 随着乡村振兴战略的深入实施&#xff0c;扶贫助农成为推动农村经济发展的重要途径。传统的扶贫模式存在信息不对称、资源分配不均等问题&#xff0c;亟需借助信息化手段提升管理效率。基于此&#xff0c;设计并实现一套扶贫助农系统管理平台&#xff0c;旨在整合农业资源、…

作者头像 李华
网站建设 2026/6/23 12:05:50

【验证码逆向专栏】某团验证码逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

作者头像 李华
网站建设 2026/6/23 0:59:56

华为云国际站代理商的CBR主要有什么作用呢?

华为云国际站代理商视角下&#xff0c;CBR&#xff08;Cloud Backup and Recovery&#xff09;的核心作用是为客户提供全场景数据保护 跨境合规备份 业务连续性保障&#xff0c;同时通过方案设计、增值服务与成本优化&#xff0c;提升客户粘性与收益&#xff0c;以下是分层拆…

作者头像 李华
网站建设 2026/6/22 20:13:40

LangFlow镜像单元测试生成:提高软件质量自动化保障

LangFlow镜像单元测试生成&#xff1a;提高软件质量自动化保障 在AI应用开发日益复杂的今天&#xff0c;如何快速构建、验证并持续迭代基于大语言模型&#xff08;LLM&#xff09;的工作流&#xff0c;已成为团队面临的核心挑战。传统的代码驱动方式虽然灵活&#xff0c;但对开…

作者头像 李华