c++ - 是否有异步方式知道文件已更改?

标签 c++ file unix filesystems posix

我想异步监视文件的任何更改。那就是当文件被修改/删除时,我想在我的程序中有一个回调(可能来自内核)。该文件只是一个纯文本文件。我知道可以使用轮询机制来做到这一点,但我正在寻找一种基于事件的解决方案。我阅读了有关 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/

相关文章:

c++ - 静态节点的 A* 寻路启发式算法

c++ - fopen() 在内部更改我的文件名?

android - 从 Uri 打开文件,独立于 android 中的位置

shell - Unix shell 替换文件中包含反引号的单词

c++ - c++11 中是否有 shared_memory_object 的替代品

c++ - 为什么我的程序在启动前就崩溃了?

c++ - 内部库类型是否应该通过我的库界面可见?

file - 我如何存储可以在Delphi中运行时更改的文件路径

c - 为什么 ICMP ECHO 数据长度与原始 ping 源代码中的 timeval 大小相比?

linux - 如何在 bash 编程循环中对文件使用 stat