有没有一种异步方式知道文件已更改?

2024-04-02

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

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


Inotify http://en.wikipedia.org/wiki/Inotify早在 2005 年就被合并到 Linux 内核中,所以除非你在一个very旧系统,您应该能够开箱即用。

我认为不存在符合 POSIX 标准的解决方案。 Mac OS X 有FSEvents http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/FSEvents_ProgGuide/Introduction/Introduction.html.

另请检查man page http://linux.die.net/man/7/inotify对于inotify。

EDIT:

不知道您的限制和/或要求,但也有G文件监视器 http://developer.gnome.org/gio/stable/GFileMonitor.html如果你使用 Glib (C++ 绑定是glibmm http://developer.gnome.org/glibmm/stable/classGio_1_1File.html#ab8e14809f330ddd58e628c96921cd987) and Q文件系统观察者 http://developer.qt.nokia.com/doc/qt-4.7/qfilesystemwatcher.html你用的是Qt吗?这些可能更跨平台友好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有一种异步方式知道文件已更改? 的相关文章

随机推荐