我想监视某些目录中新文件的创建并阅读有关inotify的链接。我喜欢这个实现并使用它。但是,就我而言,我想监视一个最多具有 3 级子目录的目录。
我的想法是每次创建新目录时添加一个手表,但为了做到这一点,我需要知道创建目录的路径。不幸的是,事件结构inotify
只能给我创建的文件目录的名称,而不是它的路径。任何人都可以为此提出一个想法吗?
add_watch(fd,root);
if ( event->mask & IN_CREATE) {
if (event->mask & IN_ISDIR){
printf("%d DIR::%s CREATED\n", event->wd,event->name );
strcpy(new_dir,root);
strcat(new_dir,"/");
strcat(new_dir,event->name);
add_watch(fd,new_dir);
其中 add_watch 是:
void add_watch(int fd, char *root)
{
int wd;
struct dirent *entry;
DIR *dp;
dp = opendir(root);
if (dp == NULL)
{
perror("Error opening the starting directory");
exit(0);
}
/* add watch to starting directory */
wd = inotify_add_watch(fd, root, IN_CREATE | IN_MODIFY | IN_MOVED_TO);
这对于根目录来说没问题,一级子目录也被监视,但是当我尝试向二级子目录添加监视器时,路径不正确。
用netbeans7.2,ubuntu12用c ++编写。