inotify_add_watch 函数用于向已经初始化的 inotify 实例添加一个监控项。当 inotify_add_watch 调用失败时,可能由多种原因导致。以下是一些可能导致 inotify_add_watch 失败的常见原因及其解决方案: 函数调用方式和参数错误: 确保inotify_add_watch 的参数类型正确。它需要的参数包括一个 inotify 实例的文件描述符(...
fd 为所指的 inotify 实例的监控列表,系统调用 inotify_add_watch() 可以向该 fd 追加新的监控项。 3.2 inotify_add_watch# 针对fd 所指的 inotify 实例的监控列表追加新的监控项。 函数原型: #include<sys/inotify.h>intinotify_add_watch(intfd,constchar*pathname,uint32_tmask); 返回值: 成功:返回值为...
如果需要监控子目录,需要在调用inotify_add_watch(int fd, char *dir, int mask):int建立监控时,递归建立子目录的监控,伪代码如下 void addwatch(int fd, char *dir, int mask) { wd =inotify_add_watch(fd, dir, mask); 向目录集合加入(wd, dir); for (dir下所有的子目录subdir) addwatch(fd, sub...
51CTO博客已为您找到关于inotify_add_watch的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及inotify_add_watch问答内容。更多inotify_add_watch相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
inotify_init函数用于创建一个inotify的句柄,可以认为此句柄就是inotify的对象。其原型如下: intinotify_init(void); 2. inotify_add_watch 创建好inotify句柄后,就可以通过调用inotify_add_watch函数添加要进行监听的文件或者目录。其原型如下: intinotify_add_watch(intfd,constchar*path,uint32_tmask); ...
perror("add watch"); } handle_event(fd); return0; } 从以上代码可以看出,inotify的使用很简单,由于一个inotify实例被抽象为一个文件,所以我们可以通过read函数直接读取其中的事件。 #include int inotify_init(void);int inotify_init1(int flags); ...
inotify_add_watch(int fd, const char* pathname, uint32_t mask) 该函数用于添加“watch list”,也就是检测列表。 可以是一个新的watch,也可以是一个已经存在的watch。其中fd就是inotify_init的返回值,pathname是要检测目录或者文件的路径,mask就是要检测的事件类型。该函数成功返回的是一个unique的watch描述符...
1.inotify_add_watch返回并不是一个fd,而只是一个标识 2.对于同一个PATH,inotify_add_watch将返回相同的标识。不需要调用close关闭,但需要调用inotify_rm_watch来删除。 在对文件进行读、写、关闭监控时需要注意这个特性。但inotify_init返回的是一个真正的fd,因此需要调用close关闭它。 但是如果相同PATH,但是是...
sys_inotify_add_watch 函数主要完成以下几个工作: 调用fget_light 函数获取 inotify 句柄对应的文件对象。 调用find_inode 函数获取 path 路径对应的 inode 对象,也就是获取要监听的文件或目录所对应的 inode 对象。 从inotify 文件对象的 private_data 字段中,获取对应的 inotify_device 对象。
int inotify_rm_watch(int fd,uint32_t wd) 从监听列表中删除一个监听文件/目录,fd是初始化时候返回的文件描述符,wd是监听的文件的标识,由inotify_add_watch函数返回。 int inotify_rm_watch(int fd, int wd) 移除一个文件/目录监控 读取事件 读取事件是调用系统read()函数,其中参数为inotify初始化返回的文件...