c++监视多个目录/子目录
c++ watch multiple directories / subdirectories
首先,如果有比inotify更简单的方法,请告诉我!
基本上,我想做的是用inotify观察一个根目录,用这些标志:IN_CREATE | IN_MODIFY | IN_DELETE。当它是IN_CREATE和IN_ISDIR时,我也想看那个文件夹。但我需要的主要是文件是否被创建,删除或修改,甚至在子目录中。现在我知道我可以使用inotify_add_watch()添加多个目录,但是当我读取事件->名称时,我如何知道它属于哪个目录?inotify_event结构似乎没有保存这个值。如果我有一个这样的结构体:
/root
然后创建目录"a":
/root/a
创建一个文件:
/root/a/tmp.txt
当我读取event->name时,它只会说tmp.txt,但我怎么知道它在"a"子目录中?我怎么知道手表描述符是什么?
在inotify_event结构中,name字段包含相对于wd发生事件的对象的名称。您需要获得父目录的绝对路径,并将文件/目录的名称连接起来以获得完整路径。同样,在Inotify_event结构的掩码字段中,您可以使用IN_ISDIR掩码位来知道在该wd中发生的事件是文件还是目录。
这是来自通知
name字段只在被监视目录下的文件返回事件时出现;它标识相对于被监视目录的文件路径名。该路径名以空结束,并且可能包含更多的空字节,以便将后续读取与合适的地址边界对齐。
我是这样做的:我创建了一个hashmap (QHash<int,>Fd_to_path)在inotify_add_watch()时间内将接收到的wd与其对应的目录字符串耦合:
int wd = inotify_add_watch(...next_dir_path..);
if (wd != -1)
fd_to_path.insert(wd, next_dir_path);
然后在struct inotify_event *ev =(…)后读取收到的inotify事件;您只需使用以下命令查询相应的目录路径:
QString dir_path = fd_to_path.value(ev->wd);
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 正在VS调试器中监视映射条目
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 我怎样才能将所有子目录与 cmake 自动匹配
- 使文件夹中的所有文件可供所有项目(子目录)访问
- 从所有列出的文件和子目录中更改目录
- 在程序运行时监视 VxWorks 中的任务 CPU 利用率
- 子目录之间的 CMAKE 共享变量
- CMake:为什么added_subdirectory对其他子目录不可见
- 获取每个目录或子目录中第一个文件的路径
- Qt创建者:加载位于子目录中的项目文件
- 如何删除由 ReadDirectoryChangesW 监视的子项的父项
- CMake:防止在子目录库项目中生成测试可执行目标
- 是否有一个标准函数可以打印/监视stdin文件的内容,同时将数据留在stdin中
- 监视GNU Radio中的缓冲区
- 遍历目录及其子目录
- 处理多个子目录中的 Makefile 依赖项并输出到单独的子目录
- 监视 SDK 下的未定义符号"__Unwind_SjLj_Unregister"
- 监视目录以完成子目录的创建,然后启动另一个进程 c++
- c++监视多个目录/子目录