当前位置:嗨网首页>书籍在线阅读

24-监视文件事件

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.7 监视文件事件

Linux提供了一个监视文件的接口inotify——通过该接口可以监控文件的移动、读取、写入或删除操作。假设你正在编写一个类似GNOME’s Nautilus的图形化文件管理器。如果文件已拷贝至目录,而且Nautilus正在显示目录内容,则该目录在文件管理器中的视图将会出现不一致。

一个解决办法是连续反复读取目录内容,删除变更内容并更新显示结果。这会产生阶段性的开销,远远谈不上是个优雅的解决方案。更糟的是,文件被删除或添加到目录,以及文件管理器反复读取目录这三者间会产生竞争。

通过inotify,内核能在事件发生时把事件推送给应用程序。一旦文件被删除,内核立刻通知Nautilus。Nautilus会做出响应,直接从目录的图形化显示中删除被删除的文件。

许多其他的应用也关注文件事件,比如备份工具和数据索引工具。inotify能够保证这些程序的实时操作:在创建、删除或写入文件时,可以立刻更新备份或数据索引。

inotify取代了dnotify。dnotify是一个较早的文件监视机制,它基于较繁琐的信号接口。和dnotify相比,应用程序总是应该优先考虑使用inotify。inotify机制在内核2.6.13中引入,由于程序在操作普通文件时也使用inotify,因此该机制非常灵活且易于使用。在本书中,我们将只探讨inotify。