utimensat()

来源:互联网 发布:红包尾数控制软件 编辑:程序博客网 时间:2024/06/18 10:34

utimensat和futimens是以纳秒级的精度改变文件的时间戳,而utime和utimes是以微妙为时间精度的。

目录

  1. 1名称
  2. 2头文件
  1. 3相关函数
  2. 4描述
  1. 5返回值
  2. 6返回的错误类型

名称

编辑
utimensat, futimens:以纳秒级的精度改变文件的时间戳

头文件

编辑
#include <sys/stat.h>

相关函数

编辑
int utimensat(int dirfd, const char *pathname,const struct timespectimes[2], intflags);
int futimens(int fd, const struct timespectimes[2]);

描述

编辑
utimensat()通过文件的路径(pathname)获得文件,futimens()通过获得文件的句柄(fd)获得文件。
这两个系统调用函数都是通过一个时间数组times来改变时间戳的,times[0]修改最后一次访问的时间,times[1]修改最后修改的时间。该时间数组是由秒和纳秒两个部分组成,数据结构如下:
struct timespec {
time_t tv_sec; /* 秒 */
long tv_nsec; /* 纳秒 */
};

返回值

编辑
调用成功,utimensat()和futimens()返回0,调用失败返回-1,并设置errno

返回的错误类型

编辑
EACCES : 时间为空
EBADF:futimens()的文件句柄无效
EFAULT:times所指的地址空间无效
EINVAL:flags无效
EINVAL:pathname是空
ELOOP:utimensat()在需找pathname所指的路劲过程中有太多符号链接
ENAMETOOLONG:pathname太长
ENOENT:pathname指向了一个不存在的文件或者目录
ENOTDIR:pathname是一个相对路径,dirfd没有设置为AT_FDCWD或者文件描述符指向一个目录
EPERM:时间戳没有改为当前时间
EROFS:文件时只读文件
ESRCH:utimensat()的查找请求被拒绝
0 0
原创粉丝点击