futimens,utimensat,utimes函数

14 篇文章 0 订阅
9 篇文章 1 订阅

1.futimens,utimensat函数原型

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

2.futimens,utimensat函数说明

两个函数的times结构体数组,第一个指向access time,第二个指向modification time。
时间戳有四种设置方式:
1.如果时间参数times是空指针。那么两个时间都被设置为当时时间。
2.如果时间参数times指向timespec结构体,任何一个tv_nsec是UTIME_NOW,那么相应的时间戳被设置为当前时间,其tv_sec忽略。
3.如果时间参数times指向timespec结构体,任何一个tv_nsec是UTIME_OMIT,那么相应时间戳不修改,tv_sec忽略。
4.如果时间参数times指向timespec结构体,并且两个tv_nsec既不是UTIME_NOW,也不是UTIME_OMIT,那么时间戳被设置为指向的结构体时间。
两个函数需要的权限:
1.如果时间参数为空指针或者tv_nsec为UTIME_NOW,那么进程有效用户ID必须等于文件所有者;或者进程对文件有写权限;或者进程是超级用户进程。
2.如果时间参数不是空指针并且tv_nsec不是UTIME_NOW和UTIME_OMIT,那么进程有效用户ID必须等于文件所有者;或者进程是超级用户进程。仅仅有写权限是不够的。
3.如果时间参数不是空指针,并且两个tv_nsec都是UTIME_OMIT,那么不需要权限检查。

3.utimes函数

int utimes(const char* path, const struct timeval times[2]);
我们并不能修改st_ctm--inode状态修改时间。当utimes被调用后,这个时间被自动更新。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值