【问题标题】:How to get last update time of a file from linux kernel?如何从linux内核获取文件的最后更新时间?
【发布时间】:2023-03-20 08:17:01
【问题描述】:

我正在编写一个 linux 模块,它从文件中获取数据。但是这个文件可能会被另一个进程更新。我想知道,如何从 linux 内核获取 C 文件的最后更新时间?

还请给我一些技巧,通过这些技巧我可以轻松判断文件是否已更新。

【问题讨论】:

  • 我无法理解为什么需要这样做。这是什么文件?
  • @duskwuff 我的模块根据文件中的条目允许某些特定用户。它不时检查文件,如果文件被更新,它会更新模块使用的缓冲区....
  • 不要那样做。内核模块不应读取配置文件。将配置存储在内核中,并允许从用户空间对其进行更新(例如,使用/proc 条目或设备节点)。

标签: c linux file linux-kernel


【解决方案1】:

使用 vfs_stat 获取文件状态,此函数返回有关文件的信息,如上次修改时间、上次访问时间等。

vfs_stat 符号被导出,所以你可以从内核模块调用这个函数。

#include <linux/uaccess.h>


mm_segment_t old_fs = get_fs();

set_fs(KERNEL_DS);
error = vfs_stat (FILE_PATH, &stat);
set_fs(old_fs);

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 2018-05-20
    • 1970-01-01
    • 2012-05-13
    • 2012-10-09
    • 2011-05-22
    • 1970-01-01
    • 2019-08-21
    • 2016-05-30
    相关资源
    最近更新 更多