我想异步监视文件的任何更改。那就是当文件被修改/删除时,我想在我的程序中有一个回调(可能来自内核)。该文件只是一个纯文本文件。我知道可以使用轮询机制来做到这一点,但我正在寻找一种基于事件的解决方案。我阅读了有关 inotify 的信息,但看起来它需要修补我的内核。
如果解决方案符合 POSIX 标准,那就更好了。
最佳答案
Inotify早在 2005 年就被合并到 Linux 内核中,所以除非您使用的是非常的旧系统,否则您应该能够开箱即用。
我认为不存在针对此的 POSIX 兼容解决方案。 Mac OS X 有 FSEvents .
同时检查 man page用于 inotify。
编辑:
不知道您的限制和/或要求,但还有 GFileMonitor如果你使用 Glib(C++ 绑定(bind)是 glibmm )和 QFileSystemWatcher你用的是Qt吗?这些可能对跨平台更友好。
关于c++ - 是否有异步方式知道文件已更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6946079/