我想从C代码触摸我的文件来修改他们的访问日期。这似乎不起作用:
struct stat fileSt;
lstat(path, &fileSt);
fileSt.st_mtime = time(NULL);
感谢您的帮助。
答案 0 :(得分:11)
utimes()可能是怎么做的。 utime()已经过时了。
使用像strace这样的工具确定这样的事情是微不足道的。
strace touch -t 01010911 xxx
.
.
open("xxx", O_WRONLY|O_NONBLOCK|O_CREAT|O_NOCTTY|O_LARGEFILE, 0666) = 0
utimes("/proc/self/fd/0", {1230829860, 0}) = 0
答案 1 :(得分:8)
我想你想要utime(2)
。这应该足够了:
utime(filename, NULL);
文档说:
int utime(const char *filename, const struct utimbuf *times);
[...]
utime()系统调用会更改访问和修改时间 inode由filename指定为actime和modtime字段的时间 分别
如果时间是
NULL
,那么文件的访问和修改时间是 设置为当前时间。
答案 2 :(得分:2)
旧版\ hello \
和utime()
适用于多种用例,但更新utimes()
&在现代系统上需要纳秒分辨率的atime
,使用:
mtime
这与较新的utimensat(0, path, NULL, 0);
结合使用非常有用,stat()
会在struct timespec
中返回st_mtim
struct stat
字段,并且还具有纳秒分辨率。
答案 3 :(得分:1)
我认为您需要查看utime()/ utimes()系统调用。不是在我的普通电脑上,所以我无法查看我害怕的细节。