是否存在知道文件已更改的异步方式?

vin*_*one 4 c++ unix filesystems posix file

我想异步监视文件是否有任何更改.这是我希望在修改/删除文件时在我的程序中回调(可能来自内核).该文件只是一个纯文本文件.我知道可以使用轮询机制来做到这一点,但我正在寻找一个基于事件的解决方案.我读到了关于inotify,但看起来它需要修补我的内核.

如果解决方案符合POSIX标准,那就更好了.

Gus*_*dez 7

Inotify早在2005年就被合并到了Linux内核中,所以除非你是一个非常古老的系统,否则你应该可以直接使用它.

我不认为存在符合POSIX标准的解决方案.Mac OS X有FSEvents.

另请查看inotify 的手册页.

编辑:

不知道你的约束和/或要求,但也有GFileMonitor如果你使用油嘴(C++的结合是glibmm)和QFileSystemWatcher是你使用Qt.这些可能更适合跨平台友好.

  • 这是一个使用 `inotify` 等待文件出现的小例子,如果有帮助的话 - http://lazarenko.me/tips-and-tricks/waiting-for-the-file-to-appear-in-linux -using-inotify 可以轻松调整以监视文件更改。 (2认同)