开发日记-20190830 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 6

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_31433709/article/details/100164323

Preface

今天的天气其实真的很棒,所以还是希望自己能够出去玩玩.


Content

函数futimens,utimensat和utimes

一个文件的访问和修改时间可以用以下的几个函数更改。futimens和utimensat函数可以指定纳秒精度的时间戳。用到的数据结构是与stat函数族相同的timespec结构

#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;

这两个函数的times数组参数的第一个元素包含访问时间,第二个元素包含修改时间,这两个时间值是日历时间,这里是自特定时间1970年1月1日 00:00:00以来所经历过的秒数。不足秒的部分用纳秒表示。

时间戳可以按下列4种方式进行指定。
(1)如果times参数是一个空指针,则访问时间和修改时间两者都设置为当前时间
(2)如果times参数指向包含(这里原文翻译其实真的很烂,这翻译绝对存在误导性)两个time-spec结构的数组,任一数组元素的tv_nsec字段的值为UTIME_NOW,相应的时间戳就设置为当前时间,忽略相应的tv_sec字段。
(3)如果times参数指向两个time-spec结构的数组,任一数组元素的tv_nsec字段的值为UTIME_OMIT,相应的时间戳保持不变,忽略响应的tv_sec字段
(4)如果time参数指向两个time-spec结构的数组,且tv_nsec字段的值为既不是UTIME_NOW也不是UTIME_OMIT,在这种情况下,相应的时间戳设置为相应的tv_sec和tv_nsec字段的值

执行这些函数所要求的优先权取决于times参数的值。

猜你喜欢

转载自blog.csdn.net/qq_31433709/article/details/100164323