如何更新时间戳文件--utimes()简单介绍

《Linux系统调用:utime,utimes,futimes,lutimes》 一、介绍 文件的时间戳是存在i节点上的,比如用zip,unzip解压文件会改变文件的时间戳其实会调用下列的系统调用来改变的。 utime用来改变文件的上次访问和修改时间戳 utimes不同于utime是可以使用微妙级精度来指定时间值 futimes使用打开的文件描述符 lutimes使用文件名,有别于utime是对于连接文件不会去解引用,就是连接文件的本身时间戳 二、接口函数 #in... 阅读详情

这两天遇到一个问题,需要设置一个时间戳文件,并且需要在需要的时候更新该时间戳文件,并比较上一次更新时间以及此次更新时间的差值,并打印出来。

下面是简单的步骤,相关代码如下:

#include <utime.h>
#include <time.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#define TIME_STAMP "/root/charliye/time_flag"
main()
{
  struct stat buf1;
  struct stat buf2;
  time_t t_old,t_old1,t_now,t_new;
  stat(TIME_STAMP , &buf1); //获取时间戳文件的相关信息存到buf1
  t_old = buf1.st_mtime;
  t_old1 = buf1.st_atime;
  printf("the last modify time is : %u,%u\n", t_old,t_old1);
  t_now = time(NULL);
  printf("the current time is : %u\n", t_now);
  int ret = utimes(TIME_STAMP, NULL); //更新时间戳文件为当前时间
  stat(TIME_STAMP, &buf2); //获取当前时间戳文件的相关信息存到buf2
  t_new = buf2.st_mtime;
  printf("the new modify time is : %u\n", t_new);
}
程序运行结果如下:

[root@localhost charliye]# ./utime
the last modify time is : 1456380013,1456380013
the current time is : 1456380015
the new modify time is : 1456380015
[root@localhost charliye]# ./utime
the last modify time is : 1456380015,1456380015
the current time is : 1456380021
the new modify time is : 1456380021
[root@localhost charliye]# ./utime
the last modify time is : 1456380021,1456380021
the current time is : 1456380031
the new modify time is : 1456380031
[root@localhost charliye]# ./utime
the last modify time is : 1456380031,1456380031
the current time is : 1456380044
the new modify time is : 1456380044






Linux文件时间戳原理与嵌入式时间操作实战 文件时间戳是操作系统内核维护的关键元数据,反映文件访问、内容修改和元数据变更三类核心事件。其底层基于inode机制实现,遵循严格的系统调用触发规则,而非用户直接写入。在嵌入式Linux开发中,准确理解st_atime、st_mtime和st_ctime的语义差异与更新边界,是构建可靠OTA升级、日志审计与配置监控系统的技术基础。尤其在资源受限场景下,需结合relatime/noatime挂载选项、utimes()微秒级控制及fsync()持久化协同,兼顾精度、性能与一致性。本文深入剖析时间戳的内核行为与工程 阅读详情

相关推荐

为什么不能修改 ctime?

ctime 更新的情况包括:(只要 inode 信息被修改)chmodchowntruncatewrite()renameetc…文件的安全属性、权限、所有权或者其他元数据被改变的时间这是文件系统中一个可靠的追踪字段。让用户可以随意修改这个字段将破坏整个安全模型。因为 ctime 用于安全审计。如果允许用户修改,文件系统无法保证文件元数据变化的真实记录,因此内核禁止用户显式修改 ctime。

dlz0836的博客 91

文件时间属性(九)

文件的时间属性虽然会在我们对文件进行相关操作(譬如:读、写)的时候发生改变,但这些改变都是 隐式、被动的发生改变,除此之外,还可以使用 Linux 系统提供的系统调用显式的修改文件的时间属性。

weixin_73901182的博客 803

【信息科学与工程学】计算机科学与自动化——第十八篇 存储系统设计——6 存储算法(1)分布式存储相关算法

存储内容

weixin_49199313的博客 1177

嵌入式Linux系统编程 — 3.5 utime、utimes、futimens、utimensat函数修改文件时间属性

在Linux系统中,文件的时间属性通常与文件的状态信息一起存储在文件的inode中。在头文件中,结构体用于存储文件的状态信息,包括时间属性。以下是st_atime文件的最后访问时间(Access Time),访问指的是读取文件内容,文件内容最后一次被读取的时间。st_mtime表示文件的最后修改时间(Modification Time),文件内容发生改变,譬如使用 write()函数写入数据到文件中。st_ctime。

几度春风里的博客 2008

保姆级教学:从0搭建微信小程序SpringBoot+Vue(一)

目标:实现一个微信小程序从后端数据库MySQL获取的商品展示页。 框架:后端采用SpringBoot,前端采用Vue,数据库MySQL。 部署工具:IntelliJ IDEA 2024.2专业版+HbuilderX+Node+微信开发者工具,jdk1.8已安装

weixin_44545610的博客 4925

H265/HEVC视频分层码流分析语义元素解释

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

weixin_43876729的博客 9432

utimes

相关函数:utime, stat 头文件:#include   #include 定义函数:int utimes(char * filename, struct timeval *tvp); 函数说明:utimes()用来修改参数filename 文件所属的inode 存取时间和修改时间。结构timeval 定义如下: struct timeval {     lo

码农崛起 1140

FFmpeg实战:SEI自定义数据在RTMP推流中的高效嵌入

本文深入探讨了如何利用FFmpeg在RTMP推流中高效嵌入SEI自定义数据。通过将SEI比作与视频帧同步的“小纸条”,文章详细解析了H.264码流中SEI的结构与位置,并提供了命令行与API编程两种实战方法,帮助开发者实现直播答题、AI元数据回传等场景下的帧级精准数据同步。

weixin_29304021的博客 325

修改文件时间信息的函数futimens、utimensat和utimes

#include <sys/stat.h> int futimens(int fd, const struct timespec times[2]); int utimensat(int fd, const char *path, const struct timespec times[2], int flag); 两个函数返回值:若成功,返回0;若出错,返回-1 (1)如果t...

tianyingang的博客 1474

VisualSFM+MeshLab 三维重建全过程记录

VisualSFM+MeshLab 三维重建全过程记录,从下载到运行出结果,以及其中一些可能出现的小问题。通过这两个软件熟悉一下多目立体视觉重建的流程。

何似莫相逢 3万+

ue 打包linux程序 在windows系统 2026

ue 打包linux程序 在windows系统 2026

jacke121的专栏 372

Linux C函数之文件及目录函数

<br />link: 建立文件硬连接<br />头文件: unistd.h<br />函数定义: int link(const char *oldpath, const char *newpath);<br />说明: link()以参数newpath指定的名称来建立一个新的连

秋刀鱼的专栏 1378

MacBook Air老本重装系统

手里的这个本子型号是A1466,cpu i5,4G内存,硬盘ssd 120G。 重装系统可以在原系统上升级到更新版本,或者用U盘安装。 先确定,这个本子可以安装什么系统。 最权威的信息当然是apple的官网,地址:https://support.apple.com/zh-cn/HT211683 在“检查兼容性”中,可以依次检查每个系统兼容的硬件型号。Mojave是A1466能安装的最高版本。 确认兼容性后,下一步就是下载安装文件。还是这个页面稍下面一点可以找到。 这里告诉用户文件可以在什

bigwood99的博客 2万+

文件和目录之函数futimens、utimensat和utimes

一个文件的访问与修改时间可以通过以下几个函数进行修改。同时, futimens和utimensat函数可以指定纳米级精度的时间戳。 #include <sys/stat.h> int futimens(int fd, const struct timespec times[2]); int utimensat(int fd, const char *path, const st...

Dunk.Wan 1871

Vue + ECharts:从零构建智慧农业数据监控大屏(附完整源码)」 「超实用!一步步实现智慧农业大屏,完整代码+讲解」 「前端新手友好:Vue + ECharts 打造炫酷农业数据大屏」 「

Vue + ECharts:从零构建智慧农业数据监控大屏(附完整源码)」 「超实用!一步步实现智慧农业大屏,完整代码+讲解」 「前端新手友好:Vue + ECharts 打造炫酷农业数据大屏」 「前端可视化项目实战:智慧农业监控大屏开发详解」 「农作物可视化监控:用 Vue 和 ECharts 构建大屏应用」 「从零开始开发一个智慧农业数据大屏(代码+图表展示)」 「前端新手也能实现!智慧农业监控大屏开发教程」 「用 Vue 和 ECharts 搭建动态数据大屏:详细图文教程」 「学习前端大屏开发:

sky10100100的博客 1535

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Unix/Linux编程:更改文件时间戳

文件时间戳 stat 结构的 st_atime、st_mtime 和 st_ctime 字段所含为文件时间戳,分别记录了对文件的上次访问时间、上次修改时间,以及文件状态(即文件 i 节点内信息)上次发生变更的时间。对时间戳的记录形式为自 1970 年 1 月 1 日(参见 10.1 节)以来所历经的秒数。 下表总结了:各种函数对文件时间戳的影响 使用 utime()和 utimes()来改变文件时间戳 使用utime()或者与之相关的系统调用集之一,可以显示改变存储于文件i文件中的文件上次访问时间戳

OceanStar的博客 705

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Node.js文件系统时间戳管理终极指南:使用node-fs-extra处理文件创建与修改时间

在Node.js开发中,精确管理文件的创建时间(atime)和修改时间(mtime)是许多应用场景的基础需求。无论是日志记录、版本控制还是文件同步,准确的时间戳都至关重要。**node-fs-extra**作为Node.js原生`fs`模块的增强工具,提供了简单高效的时间戳管理方案,让开发者无需深入底层即可轻松控制文件时间属性。 ## 为什么需要专业的时间戳管理? 文件时间戳在实际开发中发挥着

gitblog_01181的博客 1132

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

第三章_文件和目录 : 函数futimens,utimensat,utimes

函数futimens,utimensat,utimes 一个文件的访问和修改时间可以用以下几个函数修改。 #include<sys/stat.h> int futimens(int fd, const struct timespec times[2]); int utimensat(int fd, const char* path, const struct time spec times[2], int flag); 成功返回0,失败返回-1. 结构体timespec struct ti

matafeiyanll的博客 627

futimens,utimensat,utimes函数

1.futimens,utimensat函数原型 #include int futimens(int fd, const struct timespec times[2]); int utimensat(int fd, const char* path, const struct time spec times[2], int flag); 成功返回0,失败返回-1. 2.futimen

千叶why 2130

37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用_java日期相关

📝返回的是从格林尼治时间的到此时此刻所经历的毫秒数(即时间戳)

tencentes的博客 388

37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用_java日期相关(1)

📝 一个的 Date 对象表示的是创建该 Date 对象时的时间⏰(包括:年、月、日、时、分、秒、星期 …)🍀 打印出来的时间⏰非常国际范(不符合中国人的阅读习惯😀)🍀 Mon:表示星期一🍀 Oct:表示十月份🍀 CST:China Standard Time(中国标准时间)📝 给 Date 类的构造方法传一个类型的参数的话,表示的是:格林尼治时间的加上参数后的时间🍀 上面的代码:传入【1000】作为 Date 类的参数,表示的是格林尼治时间的过后的时间。

tencentes的博客 322

37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用_java日期相关(2)

时间戳查询网:http://shijianchuo.wiicha.com/* 生成毫秒时间字符串(如 20221024034702656)* 把指定格式的日期字符串转换为日期对象 (Date)* @param pattern 日期格式。* @param pattern 日期格式。* 该字符串可简单看做一个【唯一字符串】* 获取某个时间字符串的毫秒值(时间戳)* 生成指定格式的, 当前时间的字符串。* @param str 日期字符串。* 生成时间字符串(二十四小时制)* 生成时间字符串(十二小时制)

tencentes的博客 643

unix环境高级编程=文件和目录

<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } ul{ list-style: none; width: 600px;

qq_37805832的博客 2536

docker启动脚本

#!/bin/bash # 定义环境变量 export LANG="en_US.UTF-8" #统一格式化打印输出信息 printMsg(){ echo "$(date +'%Y-%m-%d %H:%M:%S')-----------$1-----------" } #输入参数个数检查 if [ $# -lt 3 ]; then printMsg "...

weixin_30551947的博客 124

更新文件时间戳的一些小技巧

工作中有时候会遇到需要把较旧 的文件上传至svn中,因为不够新 就上传不了,尤其是遇到二进制文件的时候。 后来发现通过命令可以更新文件时间戳,总结 如下,windows平台下通过dos命令 copy /B filename +,,后面一个加号两个逗号 linux下就简单了,直接touch filename

zxy_cs的专栏 2388
上一篇: C语言中 time函数和difftime函数
下一篇: sleep在windows下和linux的不同
普通网友
博客等级 码龄11年 8粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值