01-监控文件事件
第19章 监控文件事件
某些应用程序需要对文件或目录进行监控,已侦测其是否发生了特定事件。例如,当把文件加入或移出一目录时,图形化文件管理器应能判定此目录是否在其当前显示之列,而守护进程可能也想要监控自己的配置文件,以了解其是否被修改。
自内核2.6.13起,Linux开始提供inotify机制,以允许应用程序监控文件事件。本章将介绍inotify的用法。
inotify机制所取代的是dnotify,后者一来较为陈旧,二来仅具备前者的部分功能。本章会在结尾处对dnotify做简要介绍,着重突出inotify的优势所在。
inotify和dnotify都是Linux专有机制。(仅有少数其他系统提供类似机制。比如,BSD所提供的kqueue API。)
有几个函数库提供的(类似)API,比之inotify和dnotify,既更为抽象,在可移植性方面也略胜一筹。某些应用可能更倾向于采用这样的函数库。而这其中的一些库也会调用inotify和dnotify,前提是要获得操作系统的支持。FAM(文件变更监控http://oss.sgi.com/projects/fam/)和Gamin (http://www.gnome.org/~veillard/gamin/)便是此类库的两个例子。