【发布时间】:2012-12-22 08:39:19
【问题描述】:
我想监视某些目录中新文件的创建并阅读有关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++ 编写。
【问题讨论】:
-
不是真正的重复,因为这个问题是指监控新的子目录,而另一个只对确定文件名(带路径)感兴趣。
标签: c++ directory inotify watch