unix环境高级编程-4.8-utime函数

5种编程语言时间戳转换性能对比:Python/Go/Java/JavaScript/C (附基准测试) 本文对比了Python、Go、Java、JavaScript和C五种编程语言在Unix时间戳与UTC时间转换中的性能表现,通过基准测试揭示了各语言在时间处理API设计上的差异。测试结果显示,C语言在性能上表现最佳,而Go在高并发场景中展现出显著优势。文章为开发者提供了技术选型的实用建议,帮助根据具体需求选择最适合的编程语言。 阅读详情

上一节,我们描述了对文件操作的三种时间,这一节主要讲述utime函数,既对一个文件的访问和修改时间。

#include <utime.h>

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

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

此函数所使用的数据结构

struct utimbuf{
      time_t actime ;/*access time*/
     time_t modtime; /modify time**/
}

此结构的两个时间值都是日历时间,

下面解释一下这个函数

  • 如果times是个空指针的话,则访问时间和修改时间两者都设置为当前时间。当然对文件这些时间修改,必须要具备下列两个条件之一:进程的有效用户id,必须等于该文件的所有者id,或者对该文件必须要有执行的权限。
  • 如果times是飞非空指针的话,则访问时间和修改时间被设置为times所指向结构中的值。此时,进程的有效用户id必须等于该文件拥有者的id,或者必须是一个超级用户进程。,只对文件的写权限使不够的。

note:我们不能对更改状态时间值st_ctime指定一个值,当调用utime函数的时候,此字段自动更新。

一些unix系统中,touch命令使用utime函数。

实例:下面面程序使用带O_TTUNC选项open函数,将文件长度截短为0,但并不更新其访问时间和修改时间。我们想到,改程序是先用stat函数得到文件当前时间保存下来,阶段后,在复位时间。

#include"apue.h"
#include<fcntl.h>
#include<utime.h>

int main(int argc,int **argv)
{
        int  i,fd;
        struct stat statbuf;
        struct utimbuf timebuf;

        for(i=1;i<argc;i++)
        {
           if(stat(argv[i],&statbuf)<0){
                err_sys("s%:stat error",argv[i]);
                continue;
           }
          if((fd=open(argv[i],O_RDWR|O_TRUNC))<0){
                err_ret("%s:open error",argv[i]);
                continue;
          }
         close(fd);
         timebuf.actime=statbuf.st_atime;
         timebuf.modtime=statbuf.st_mtime;
        if(utime(argv[i],&timebuf)<0){
         err_ret("%s:utime error",argv[i]);
        }

        }


}


运行结果如图:

从结果中,我没你可以看到。

更多,欢迎访问http://blog.youkuaiyun.com/wallwind

【LinuxC语言】utime函数 utime函数在C语言中用于更改文件的访问时间(access time, atime)和修改时间(modification time, mtime)。这是一个POSIX标准的函数,常用于更新文件的时间戳,而不必实际修改文件的内容。utime函数提供了一种简便的方法来更新文件的时间戳,而不需要修改文件内容。这在文件管理、备份、同步和测试中都有广泛的应用。通过合理使用utime函数,可以精确控制文件的时间属性,满足各种应用场景的需求。 阅读详情

相关推荐

61、进程监控与程序执行全解析

本文深入解析了Linux环境下进程监控与程序执行的核心机制。内容涵盖子进程的创建与终止监控,通过SIGCHLD信号和wait系列函数回收资源,避免僵尸进程;详细分析了SA_NOCLDSTOP、SA_NOCLDWAIT等信号标志及不同系统间的差异;并全面介绍了execve()系统调用及其封装库函数(如execlp、execvp等)的使用方法、参数传递规则与常见错误处理。结合代码示例与流程图,帮助读者掌握多进程编程中的关键技术点,适用于实现进程管理、shell模拟等场景。

qsc901234的博客 42

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

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

几度春风里的博客 2007

Linux服务器编程之utime()函数修改文件存取时间

本文给大家分享的是Linux服务器编程的utime()函数的用法以及修改文件存取时间的方法,有需要的小伙伴可以参考下

文件时间属性(九)

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

weixin_73901182的博客 803

python电子学会三级的零碎笔记

‌示例‌:如果s = ['a', 'b', 'c'],则' '.join(s)+'\n'的结果是'a b c\n',写入文件时所有元素会在一行内显示,每个元素之间用空格分隔,末尾有一个换行符。(2) '\n'.join(s)‌:如果s = ['a', 'b', 'c'],则'\n'.join(s)的结果是'a\nb\nc',写入文件时每个元素会占据文件的一行。(1) ' '.join(s)+'\n'‌:这种方式首先将列表s中的每个元素通过空格连接成一个字符串,然后在字符串末尾添加一个换行符\n。

xzal12的博客 690

软件工程导论实践:从需求到架构的机票预订系统全流程解析

本文深入解析机票预订系统从需求分析到架构设计的全流程实践,涵盖业务流程、功能建模、模块化设计、性能优化等关键环节。通过实际项目经验,分享软件工程导论在复杂系统开发中的应用技巧,包括数据流图绘制、E-R图设计、微服务架构及高并发处理等实战策略,助力开发者构建高效可靠的机票预订系统。

weixin_29202213的博客 411

utime函数

utime函数:对一个文件的访问和修改时间 #include <utime.h> int utime( const char *pathname, const struct utimbuf *times ); 返回值:若成功则返回0,若出错则返回-1 此函数所使用的数据结构是: s...

weixin_30782331的博客 864

深入理解HanLP1.x,填平可能遇到的坑

提取指定数量的摘要。自定义词典为什么要单独领出来讲呢?因为在我们的业务开发中,可能分词的效果并不理想,需要定制自己的词库,索引更加常用。例如:小米su7特斯拉modelY比亚042025款6575767670908我们需要分出小米su72025款等词。我们分别看看用字典和不用字典的效果。

static_coder的博客 977

python中的utime

utime(...) utime(path, (atime, mtime)) utime(path, None) Set the access and modified time of the file to the given values. If the second form is used, set the access and modified times to...

weixin_30527323的博客 608

Maxwell参数化建模

MAXWELL 2019 R3 参数化建模 参数化建模的优势 所谓参数化,就是在电机本体设计中涉及到的各类参数变量化,而每个变量之间又存在一定的制约关系,这样只需修改其中某个或者某些变量就可以做到对整个电机模型合理地改动。 参数化举例 以表贴式电机为例,先画电机定子,如上所示,依次进行后会弹出下面的选项框 上图就是描述电机尺寸的各类参数,接下来进行参数化。 回车ENTER,并给变量ds赋值。 赋值好后,回车ENTER 左下角properties里面就有我们新建立的变量ds了。 继续将剩余的参数

qq_41387280的博客 1万+

C# MES通信从入门到精通(10)——C#使用HTTP的Post和Get方法和Mes系统通信

本文详细介绍了如何利用C#完成与HTTP协议的MES系统进行通信,通过POST和GET方法实现与MES系统的交互,由高级工程师的实战经验总结,实属C#与MES通信领域的葵花宝典!

qq_34059233的博客 3410

《UNIX环境高级编程》笔记--文件时间

对于每个文件都有3个时间字段,它们保存在stat结构中: 修改时间是对文件内容最后一次修改的时间,更改时间是对文件的i节点最后一次修改的时间。 下面使用linux命令来说明说明文件的三个时间字段。 生成文件,使用stat命令查看文件的三个时间,三个时间相同: yan@yan-vm:~/apue$ touch timefile yan@yan-vm:~/apue$ stat

TODD911的专栏 1782

22、嵌入式软件随机延迟生成与加密算法防护技术

本文探讨了嵌入式软件中的随机延迟生成方法与块密码软件实现的高阶掩码及洗牌技术。重点介绍了浮动均值延迟生成方法,其在8位AVR平台上的实现效率为Θ(1),显著提升了抗相关功率分析(CPA)攻击的能力,相比传统方法更安全且轻量。同时,分析了高阶掩码与洗牌技术结合的方案,通过理论建模量化其对高级差分功率分析(DPA)攻击的抵抗能力,并以AES为例展示了该方案的应用流程。最后对比了不同防护技术在安全性与开销之间的权衡,为实际应用中选择合适的安全策略提供了依据。未来可进一步优化实现效率并融合多种防护手段以应对复杂安全

fern8的博客 86

UNIX环境高级编程习题答案——第四章

会输出符号链接所指向文件的文件类型。

qq_27637315的博客 1172

【Unity小游戏】整整一个周末写一款《皇室战争 玩法》 的 即时战斗类 游戏Demo。两万多字游戏制作过程+解析

Unity游戏制作,本篇文章介绍了复刻皇室战争玩法的一个自制小游戏,共有该游戏的两万字教程加制作过程,欢迎品尝! 世界上没有绝对的公平,如果我们起点就比别人第一步,那就更需要比别人努力了。

努力前行,总会成为自己心中的那道光 12万+

利用R批量计算相关系数

批量求相关系数

weixin_52073820的博客 1458

Unix环境高级编程 第三版 勘误表(中文翻译)

下面的错误没有被固定在任何印刷。 书目是缺少博韦和cesati [ 2006 ]的一个条目,这是在74页提到的。应参考: 博韦,D. P. cesati,M.理解Linux内核,第三版。O'Reilly Media,塞瓦斯托波尔,约 在929页(附录C),练习13.3应该标注13.4。 页307和309参考图9.13。应该是9.12。 在842页,这printer_s

乌合之众的专栏 1705

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

unix环境高级编程=进程控制

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style type="text/css"> *{padding: 0px;margi

qq_37805832的博客 714

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

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

ssm框架搭建

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

unix环境高级编程=UNIX基础知识

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style type="text/css"> *{padding: 0;margin:

qq_37805832的博客 978

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Unix环境高级编程--4-文件和目录--4.1-4.2函数stat-4.3文件类型

struct stat { mode_t st_mode; // file type & mode(permissions) ino_t st_ino; // i-node number(serial number) dev_t st_dev; // device number(filesystem) dev_t st_rdev; // device number for specials files .

LuckyDog0623的博客 554

state-threads高级编程技巧:10个提升并发性能的实战经验分享

state-threads是一个轻量级的C/C++协程库,为高性能网络服务器提供类似Go语言goroutine的并发编程能力。本文将分享10个实战经验,帮助您充分发挥state-threads的潜力,构建高效可扩展的并发应用。 ## 为什么选择state-threads协程库?🚀 state-threads协程库采用用户态线程模型,避免了传统线程上下文切换的开销,特别适合高并发网络编程场景。

gitblog_00646的博客 296

UNIX系统调用:文件管理

文章目录1、stat1.1、文件类型1.2、文件权限2、acess3、umask4、chmod fchmod5、chown fchown lchown6、link ulink7、 remove(标准库函数)8、rename9、symlink10、readlink11、 mkdir rmdir12、 opendir readdir13 rewinddir seekdir telldir14、 cl...

uncle103的博客 760

开源 视频检索_开源网络检索器

本文介绍如何将流行的开源项目移植到IBM z / OS UNIX环境。 以下三个原因促使我们写这篇文章: 我们的项目涉及现代软件的几乎所有基本方面,即数据,网络,命令终端I / O和标准库。 它们本身不仅是有趣的领域,而且还为软件设计人员提供了有关平台和移植过程的重要知识。 自由软件系统具有它们自己的一套约定,区别和限制,这些规则,区别和限制一开始可能对结构化编程背景的开发人员来说是...

cusi77914的博客 826

fork后父子进程共享资源

fork后父子进程共享资源Unix环境高级编程中8.3节中说,“子进程是父进程的副本。例如,子进程获得父进程数据空间、堆和栈的副本。注意,这是子进程所拥有的副本。父进程和子进程并不共享这些存储空间部分。父进程和子进程共享正文段。”书中还预留了例子说明子进程对变量所做的改变并不影响父进程中该变量的值。/** * fork.c * 探讨父子进程共享变量问题 **/#include <stdio.h

teffi的专栏 1万+

进程控制之进程会计

大多数UNIX系统提供了一个选项以进行进程会计(process accounting)处理。启用该选项后,每当进程结束时内核就写一个会计记录。典型的会计记录包含总量较小的二进制数据,一般包括命令名、所使用的CPU时间总量、用户ID和组ID、启动时间等。 函数(acct)用于启用和禁用进程会计。唯一使用这一函数的命令是accton(8)命令。超级用户(系统管理员)执行一个带路径名参数(如:/var...

weixin_30535167的博客 308
上一篇: unix环境高级编程-4.18-文件时间
下一篇: unix环境高级编程-mkdir和rmdir函数
ctreewang
博客等级 码龄16年 1608粉丝 276原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值