UTIME - Linux手册页
时间:2019-08-20 17:59:36 来源:igfitidea点击:
Linux程序员手册 第2部分
更新日期: 2017-09-15
名称
utime,utimes-更改文件的上次访问和修改时间
语法
#include <sys/types.h> #include <utime.h> int utime(const char *filename, const struct utimbuf *times); #include <sys/time.h> int utimes(const char *filename, const struct timeval times[2]);
说明
注意:现代应用程序可能更喜欢使用utimensat(2)中描述的接口。
utime()系统调用将文件名指定的索引节点的访问和修改时间分别更改为actime和modtime的时间字段。
如果times为NULL,则文件的访问和修改时间将设置为当前时间。
在以下情况下允许更改时间戳:进程具有适当的特权,或者有效的用户ID等于文件的用户ID,或者时间为NULL,并且进程具有文件的写许可权。
utimbuf结构为:
struct utimbuf { time_t actime; /* access time */ time_t modtime; /* modification time */ };
utime()系统调用允许以1秒的分辨率指定时间戳。
utimes()系统调用与此类似,但是times参数引用的是数组而不是结构。此数组的元素是timeval结构,用于指定时间戳的精度为1微秒。时间结构为:
struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ };
times [0]指定新的访问时间,times [1]指定新的修改时间。如果times为NULL,则类似于utime(),文件的访问和修改时间设置为当前时间。
返回值
成功时,返回零。如果出错,则返回-1,并正确设置errno。
错误说明
- EACCES
- 对path路径前缀中的目录之一的搜索许可被拒绝(另请参见path_resolution(7))。
- EACCES
- times为NULL,调用者的有效用户ID与文件的所有者不匹配,调用者没有对该文件的写访问权,并且该调用者没有特权(Linux:既不具有CAP_DAC_OVERRIDE也不具有CAP_FOWNER功能)。
- ENOENT
- 文件名不存在。
- EPERM
- times不为NULL,则调用者的有效UID与文件的所有者不匹配,并且调用者没有特权(Linux:不具有CAP_FOWNER功能)。
- EROFS
- 路径驻留在只读文件系统上。
遵循规范
utime():SVr4,POSIX.1-2001。 POSIX.1-2008将utime()标记为过时。
utimes():4.3BSD,POSIX.1-2001。
备注
Linux不允许更改不可变文件上的时间戳,或在仅追加文件上将时间戳设置为当前时间以外的时间戳。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。