最近在写一个云备份的项目,其中有一个模块是要监控计算机本地的文件,于是我翻了翻linux/unix系统编程手册发现了inotify这个用于文件监控的框架
1.概述
1)inotify机制可用于监控文件或目录。当监控目录时,与该目录自身以及该目录下面的文件都会被监控,其上有事件发生时都会通知给应用程序
2)inotify监控机制为非递归,若应用程序有意监控整个目录子树内的事件,则需对该树中的每个目录发起inotify_add_watch()调用
3)可使用select(),poll(),epoll()以及由信号驱动的I/O来监控inotify文件描述符
2.inotify API
1)inotify_init()系统调用可创建一新的inotify实例
#include<sys/inotify.h>
int inotify_init(void);
该函数的返回值为一个文件描述符,我们可以简单的理解为该文件描述符所指代的文件中将会保存类似所监控的目录所发生的事件集
2)针对fd所指的inotify实例的监控列表,系统调用inotify_add_watch()可以追加新的监控项
#include<sys/inotify.h>
int inotify_add_watch(int fd,const char *pathname,uint32_t mask);
参数pathname为想要创建的监控项所对应的文件,特别注意调用该接口必须要对该文件有读权限,该函数只对文件做一次检查&#