- 主题:修改文件的创建日期要用哪个 API?
你说的创建日期应该是change time这个时间戳吧?如果是找修改它的标准的api,似乎
是没有的。你可以看看内核源码的fs/attr.c中的notify_change:
attr->ia_ctime = now;
if (!(ia_valid & ATTR_ATIME_SET))
attr->ia_atime = now;
else
attr->ia_atime = timestamp_truncate(attr->ia_atime, inode);
ctime是直接赋值为now了,根本不让改,所以应该是没有标准api来修改。
你那个tv_nsec的算法是错误的,可以通过clock_gettime获得精确到纳秒的当前时间。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: utimensat() 只能修改 modified 和 access 两个时间,不能修改创建时间。
: 想在备份的时候把创建日期也备份起来。
: 顺便问一下,utimensat() 的参数是结构体 struct timespec,其中的 tv_nsec 字段转换秒小数点后面的数字吗?
: ...................
--
修改:gameplayer FROM 111.199.187.*
FROM 111.199.187.*
ctime是change time, creation是btime,man statx或者man inode:
/* The following fields are file timestamps */
struct statx_timestamp stx_atime; /* Last access */
struct statx_timestamp stx_btime; /* Creation */
struct statx_timestamp stx_ctime; /* Last status change */
struct statx_timestamp stx_mtime; /* Last modification */
不过btime在大部分Linux文件系统下都是不支持的:
The btime timestamp was not historically present on UNIX systems and is not currently supported by most Linux filesystems.
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 没有 change time 吧。是 mtime, modified.
: ctime 确实是 created time. 但是目前看起来没有 API 可以修改。
--
修改:gameplayer FROM 222.128.5.*
FROM 222.128.5.*
stat可以显示,看Birth那一行, 或者stat -c %w xxx
【 在 JulyClyde (我的月份又来了) 的大作中提到: 】
: btime怎么显示?
--
FROM 222.128.5.*