延迟期间这组描述符的任意一个文件描述符发生活动,将立即恢复执行程序.否则,调用就会超时,允许应用程序执行其他进程,比如在图形用户界面(GUI)工具中响应鼠标或键盘事件.
下面是使用 inotify 的其他技巧:
●如果监视中的文件或目录被删除,它的监视器也会被自动删除(在删除事件发出之后). ●如果在已卸载的文件系统上监控文件或目录,监视器将在删除所有受影响的监视之前收到一个卸载事件. ●将 IN_ONESHOT 标志添加到监视器标记中,设置一个一次性警告.警告在发送之后将被删除. ●要修改一个事件,提供相同的路径名和不同的标记.新监视器将取代老监视器. ●考虑到实用性,不可能耗尽任何一个 inotify 实例的监视器.然而,您可能会耗尽事件队列的空间,这取决于处理事件的频率.队列溢出会引起 IN_Q_OVERFLOW 事件. close() 方法毁坏 inotify 实例和所有相关联的监视器,并清空队列中的所有等待事件.
安装 inotify 工具套件
inotify 编程界面很容易使用,但如果您不想编写自己的工具,可以使用一种开源的灵活的代替方法.Inotify 工具库(参见下面的 参考资料 获得链接)提供一对监控文件系统活动的命令行实用程序:
●inotifywait 仅执行阻塞,等待 inotify 事件.您可以监控任何一组文件和目录,或监控整个目录树(目录、子目录、子目录的子目录等等).在 shell 脚本中使用 inotifywait. ●inotifywatch 收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次. 在撰写本文时,最新版本的 inotify 库是 version 3.13,于 2008 年 1 月发布.安装 inotify 工具有两种方法:可以下载并亲自构建该软件,或使用 Linux 发布版的包管理器安装一组二进制文件(如果已知库包含 inotify 工具).要在基于 Debian 的发布版上使用后一种方法,请运行 apt-cache search inotify,并查找匹配的工具,如清单 6 所示.在本文的示例系统 Ubuntu Desktop version 8.04 上,这些工具已经可用.
|