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

02-概述

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

19.1 概述

使用inotify API有以下几个关键步骤。

1. 应用程序使用inotify_init()来创建一inotify实例,该系统调用所返回的文件描述符用于在后续操作中指代该实例。

2. 应用程序使用inotify_add_watch()向inotify实例(由步骤1创建)的监控列表添加条目,藉此告知内核哪些文件是自己的兴趣所在。每个监控项都包含一个路径名以及相关的位掩码。位掩码针对路径名指明了所要监控的事件集合。作为函数结果,inotify_add_watch()将返回一监控描述符,用于在后续操作中指代该监控项。(系统调用inotify_rm_watch()执行其逆向操作,将之前添加入inotify实例的监控项移除。)

3. 为获得事件通知,应用程序需针对inotify文件描述符执行read()操作。每次对read()的成功调用,都会返回一个或多个inotify_event结构,其中各自记录了处于inotify实例监控之下的某一路径名所发生的事件。

4. 应用程序在结束监控时会关闭inotify文件描述符。这会自动清除与inotify实例相关的所有监控项。

inotify机制可用于监控文件或目录。当监控目录时,与路径自身及其所含文件相关的事件都会通知给应用程序。

inotify监控机制为非递归。若应用程序有意监控整个目录子树内的事件,则需对该树中的每个目录发起inotify_add_watch()调用。

可使用select()、poll()、epoll以及由信号驱动的I/O(自Linux 2.6.25起)来监控inotify文件描述符。只要有事件可供读取,上述API便会将inotify文件描述符标记为可读。关乎这些编程接口的详细信息请见第63章。

inotify机制属可选的Linux内核组件,可通过CONFIG_INOTIFY和CONFIG_INOTIFY_USER选项进行配置。