c++ - 如何让我的程序监视 C++ 中的文件修改?

标签 c++ file-io filesystems monitoring fsevents

有很多程序(例如 Visual Studio)可以检测外部程序何时修改文件,然后根据用户的需要重新加载该文件。在 C++ 中是否有一种相对简单的方法来完成此类事情(不一定必须与平台无关)?

最佳答案

根据平台的不同,有多种方法可以实现此目的。我会从以下选项中进行选择:

跨平台

Trolltech 的 Qt 有一个名为 QFileSystemWatcher 的对象它允许您监视文件和目录。我确信还有其他跨平台框架也可以为您提供这种功能,但根据我的经验,这个框架运行得相当好。

Windows (Win32)

有一个名为 FindFirstChangeNotification 的 Win32 api哪个可以完成这项工作。有一篇不错的文章,其中有一个名为 How to get a notification if change occurs in a specified directory 的小型 api 包装类。这将帮助您开始。

Windows(.NET Framework)

如果您可以将 C++/CLI 与 .NET Framework 结合使用,那么 System.IO.FileSystemWatcher是您选择的类(class)。微软有一篇很好的文章 how to monitor file system changes使用此类。

操作系统

FSEvents API 是 OS X 10.5 的新功能,功能非常齐全。

Linux

使用inotify正如亚历克斯在他的回答中提到的。

关于c++ - 如何让我的程序监视 C++ 中的文件修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922213/

相关文章:

c++ - 将 vector <std::unique_ptr<A>> 转换为 vector <A>

c++ - 不使用 GDI 的 DirectX 字体教程

java - `java.nio.file.Files.createFile` 是阻塞调用吗?

c++ - 跨平台文件结构处理

c - c中的迭代目录遍历

c++ - 如何在 Arduino 上将时间设置为中央时区?

c++ - 获取字符串的最后 9 个字符

c++ - 如何覆盖当前文件?

ubuntu - 如何将文件从本地文件系统复制到HDFS文件系统?

windows - 为什么当我尝试打开删除挂起的文件时 Windows 返回 ERROR_ACCESS_DENIED