Linux开发--inotify事件机制
来源:互联网 发布:快餐店数据流程图 编辑:程序博客网 时间:2024/05/17 08:21
Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入。
在BSD和Mac OS系统中比较有名的是kqueue,它可以高效地实时跟踪Linux文件系统的变化。
近些年来,以fsnotify作为后端,几乎所有的主流Linux发行版都支持Inotify机制。
如何知道你的Linux内核是否支持Inotify机制呢?很简单,执行下面这条命令:
grep -r INOTIFY_USER /boot/
在BSD和Mac OS系统中比较有名的是kqueue,它可以高效地实时跟踪Linux文件系统的变化。
近些年来,以fsnotify作为后端,几乎所有的主流Linux发行版都支持Inotify机制。
如何知道你的Linux内核是否支持Inotify机制呢?很简单,执行下面这条命令:
grep -r INOTIFY_USER /boot/
如果输出"CONFIG_INOTIFY_USER=y",便可以使用inotify机制。
下面代码展示了利用inotify对/etc/目录下文件读写进行监控:
#include <sys/inotify.h>#include <unistd.h>#include <stdio.h>#define NAME_MAX 100#define BUF_LEN (10 * sizeof(struct inotify_event) + NAME_MAX +1)int get_inotify(){int fd;fd = inotify_init();if (fd == -1){perror("inotify_init");return -1;// exit (EXIT_FAILURE);}int wd;wd = inotify_add_watch(fd, "/etc/, IN_ACCESS | IN_MODIFY);if (wd == -1){perror ("inotify_add_watch");return -1;// exit (EXIT_FAILURE);}char buf[BUF_LEN] __attribute__((aligned(4)));while(1){ssize_t len, i = 0;/* read BUF_LEN bytes’ worth of events */len = read (fd, buf, BUF_LEN);/* loop over every read event until none remain */while (i < len){struct inotify_event *event = (struct inotify_event *) &buf[i];printf("wd=%d mask=%d cookie=%d len=%d dir=%s\n",event->wd, event->mask, event->cookie, event->len, (event->mask & IN_ISDIR) ? "yes" : "no");/* if there is a name, print it */if (event->len){printf ("name=%s\n", event->name);}/* update the index to the start of the next event */i += sizeof(struct inotify_event) + event->len;}}return 0;}int main(int argc, char const *argv[]){/* code */get_inotify();return 0;}
0 0
- Linux开发--inotify事件机制
- Linux文件系统Inotify机制
- Linux文件系统Inotify机制
- linux inotify通知机制
- inotify文件系统事件驱动机制
- inotify 文件系统事件监控机制
- linux inotify 监控文件系统事件
- linux inotify 监视文件事件
- linux inotify 监控文件系统事件
- Linux下inotify机制简介
- Linux下inotify机制简介
- Linux下inotify机制简介
- Linux inotify&pthread编程机制
- HDFS inotify:Linux inotify机制在HDFS中的实现
- linux开发 -- 文件监控 inotify
- 使用 inotify 监控 Linux 文件系统事件
- 使用Inotify 监控Linux 文件系统事件
- 使用 inotify 监控 Linux 文件系统事件
- java中ObjectInputStream与ObjectOutputStream的认识
- iOS内购审核被拒 错误状态码21007
- 生成随机数
- 深入理解Activity——生命周期、启动模式、taskAffinity
- Permutations II
- Linux开发--inotify事件机制
- 新知识-log4j日志管理-知识点-配置步骤-实例
- 性能优化--缓存篇
- android开发出现java.util.zip.ZipException: duplicate entry..
- [提高总结四]flexible box的布局练习
- 安卓集成微信支付总结 适合新手
- SQL语句学习
- AngularJS实现前后端分离模式下的权限控制
- OpenCV Mat类型与IplImage类型的相互转换