INOTIFY - 监听事件

简介: Linux 2.6.13 内核中引入了新的文件系统变化通知机制 `inotify` ,使用该特性提供的用户态调用 api ,可以方便的完成文件变化监听。

Linux 2.6.13 内核中引入了新的文件系统变化通知机制 inotify ,使用该特性提供的用户态调用 api ,可以方便的完成文件变化监听。

各种语言基本都提供了对该接口的调用方法: C 不必多说, Perl 使用 [Linux::Inotify2](https://metacpan.org/pod/Linux::Inotify2)Golang 使用 golang.org/x/sys/unixPython 则使用 [pyinotify](https://github.com/seb-m/pyinotify) 即可完成调用。

这里汇总所有相关监听事件,理论上针对所有语言通用:

*            IN_ACCESS         文件被访问
 *            IN_ATTRIB            文件属性发生变化(文件元数据改变, 如权限, 链接计数, 扩展属性, 用户ID或组ID等)
 *            IN_CLOSE_WRITE      关闭以write方式打开的文件
 *            IN_CLOSE_NOWRITE    关闭以非write方式打开的文件
 *            IN_CREATE            在受监控目录内创建了文件/目录
 *            IN_DELETE            在受监控目录内删除了文件/目录
 *            IN_DELETE_SELF      被监测的文件/目录被删除
 *            IN_MODIFY            文件被修改
 *            IN_MOVE_SELF        移动受监测的文件或目录
 *            IN_MOVED_FROM        文件移出被监测的目录
 *            IN_MOVED_TO          文件移入被监测的目录
 *            IN_OPEN              文件被打开
 * --------- 上述flag的集合
 *            IN_ALL_EVENTS        以上所有flag的集合
 *            IN_MOVE              IN_MOVED_TO + IN_MOVED_FROM
 *            IN_CLOSE            IN_CLOSE_WRITE + IN_CLOSE_NOWRITE
 * --------- 不常用的flag
 *            IN_DONT_FOLLOW      不对符号链接解引用, 监控符号链接自身
 *            IN_MASK_ADD          将事件追加到pathname的当前监控掩码
 *            IN_ONESHOT          只监测一个事件, 事件发生后, 被监控项会从监控列表中消失
 *            IN_ONLYDIR          只监测目录
 *            IN_IGNORED          监控项被内核或应用程序移除
 *            IN_ISDIR            发生事件的是一个目录
 *            IN_Q_OVERFLOW        Event队列溢出
 *            IN_UNMOUNT          文件系统unmount

参考文献

目录
相关文章
|
4月前
|
开发者
移动端 click 事件、touch 事件、tap 事件的区别
移动端 click 事件、touch 事件、tap 事件的区别
27 1
|
4月前
事件监听
事件监听
|
4月前
v-on能否监听多个事件?
v-on能否监听多个事件?
35 0
|
4月前
|
API
epoll监听信号事件-signalfd
epoll监听信号事件-signalfd
53 0
|
监控 Linux
inotify监听文件和目录
用途:监测指定文件或目录(或不指定则为当前目录)的一切动作。
|
XML 缓存 NoSQL
事件监听思考
在整合在项目中,我们通常需要基于事件去触发另外的业务逻辑动作的完成。也即在我们做需求时,通常会基于不同的事件码来完成业务处理,此时可以考虑将其单独处理,基于观察者模式+策略模式。还有一种如果当Spring完成Bean的初始化,需要做一些特殊处理,此时除了使用InitializingBean,还可以使用监听完成一些定制化的初始化动作,实现ApplicationListener<ContextRefreshedEvent>。
121 0
事件监听思考
|
Windows
WPF- 模拟触发Touch Events
原文:WPF- 模拟触发Touch Events 基于API: [DllImport("User32.dll")] public static extern bool InitializeTouchI...
1164 0
|
监控 应用服务中间件 Linux
Linux inotify监听文件状态
Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
|
监控 Ubuntu Linux