Linux内核inode时间戳

时间:2014-03-06 04:06:28

标签: linux linux-kernel kernel kernel-module inode

我想知道以下哪个inode条目包含创建文件的时间和上次修改文件的时间?

由于

2 个答案:

答案 0 :(得分:0)

阅读stat(2)的手册页。这是直接的:

       struct stat {
           dev_t     st_dev;     /* ID of device containing file */
           ino_t     st_ino;     /* inode number */
           mode_t    st_mode;    /* protection */
           nlink_t   st_nlink;   /* number of hard links */
           uid_t     st_uid;     /* user ID of owner */
           gid_t     st_gid;     /* group ID of owner */
           dev_t     st_rdev;    /* device ID (if special file) */
           off_t     st_size;    /* total size, in bytes */
           blksize_t st_blksize; /* blocksize for file system I/O */
           blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
           time_t    st_atime;   /* time of last access */
           time_t    st_mtime;   /* time of last modification */
           time_t    st_ctime;   /* time of last status change */
       };

答案 1 :(得分:0)

struct inode包含i_ctime(创建)和i_mtime(修改)。

如果您在内核空间并且需要为给定路径获取这些值,则过程如下:

声明struct path,然后使用路径名称调用kern_path来填充结构,这样您就可以访问struct dentry,而struct inode就是path->dentry->d_inode。所以struct inode

获得inode->ctime.tv_sec后,只需访问inode->ctime.tv_nsec / {{1}}即可。

如果您需要修改这些值,则需要根据此概念证明进行一些额外的工作:

https://github.com/linuxthor/inode-ctime/blob/master/inode-ctime.c