1
我想监视某些目录中新文件的创建并阅读关于inotify的链接。我喜欢这个实现并使用它。但是,就我而言,我想监视一个有3级子目录的目录。inotify获取目录
我的想法是在每次创建新目录时添加一个监视,但为了执行此操作,我需要知道创建的目录的路径。不幸的是,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);
这是确定的根目录下,1级子目录获取也看了,但是当我尝试手表添加到Level-2子目录路径不正确。
用C++编写的netbeans7.2,ubuntu12。
http://stackoverflow.com/questions/9313206/retrieve-the-full-path-name-from-inotify-event – us2012
的可能重复不是真的,因为这个问题重复是指监测新的子目录,而另一个只关心确定文件的名称(带路径)。 –