代码之家  ›  专栏  ›  技术社区  ›  scubabbl

如何监视C++中的文本文件更改?难点:没有.NET

  •  4
  • scubabbl  · 技术社区  · 17 年前

    用例:第三方应用程序希望以编程方式监视另一个程序生成的文本文件。文本文件包含更新时要分析的数据。

    是否有任何库可用于此,或者我将不得不推出自己的解决方案?

    谢谢

    4 回复  |  直到 17 年前
        1
  •  8
  •   Martin Beckett    17 年前

    您可以使用以下命令监视目录: FindFirstChangeNotification 适用于任何窗口。

    here

        2
  •  5
  •   Adam Pierce    17 年前

    一个更简单的解决方案是检查文件最后修改的时间戳。

    如果您使用_stat64()函数来执行此操作,它将成为一个跨平台的解决方案。

    struct __stat64 fileinfo;
    
    if(-1 != _stat64(filename, &fileinfo)
       return fileinfo.st_mtime;
    
        3
  •  1
  •   Community Mohan Dere    9 年前

    看起来像这样: Tracing which process that has opened a particular file

    再一次 sysinternal 给了一些提示和建议 tools

        4
  •  1
  •   Joe Basirico    17 年前

    这听起来很像来自sysinternals(现在是MS)的FileMon所做的。他们通过创建动态加载的虚拟设备驱动程序来实现这一点。他们对它的工作原理有很好的描述 here :

    FileMon的工作原理

    对于Windows 9x驱动程序,心脏 在虚拟设备中有个文件名 驱动程序,文件vxd.vxd。它是动态的 加载,并在其初始化中 通过安装文件系统筛选器 VxD服务, IFSMGR\u安装文件系统PIHOOK,至 将自身插入到的调用链中 所有文件系统请求。在窗户上 FileMon的核心是一个文件 系统驱动程序,用于创建和 目标文件系统设备对象 FileMon将看到所有IRP和 针对驱动器的FastIO请求。 关闭呼叫,它将更新内部 用作映射的哈希表 是基于句柄的,它会查找 在哈希表中的句柄以获取 显示的全名。如果 基于句柄的访问引用文件 在FileMon启动之前打开,FileMon 将无法在其中找到映射 哈希表,并将简单地显示 而不是句柄的值。