如何使用inotify递归地监控新目录的内容?

6
首先,我想通过使用inotify监视特定目录(主目录)中的文件和子目录。如果在此主目录中添加了新目录,如何确保使用inotify监视此子目录?如何监视主目录的子目录中的新目录?
我认为使用inotify_add_watch()函数将其添加到监视中很容易,但我不知道如何获取子目录中文件和目录的正确相对路径地址(例如,在不同位置进行类似于Dropbox的同步时仍然保持正确的目录树)。

代码是由我提供的,请检查一下。 https://dev59.com/W2DVa4cB1Zd3GeqPZhGQ#27917793 - Akatsuki
1个回答

6
实现最快的方法(但实际上不是最快的)是:
  1. 通过递归探索子目录来创建初始目录树;在C/Linux中可以找到一个示例:

    http://www.lemoda.net/c/recursive-directory/

  2. 为每个子目录添加监视;当有内容被修改或更改时,您可以递归解析所有子目录并查看差异。类似的讨论可以在这里找到: How to monitor a folder with all subfolders and files inside?

  3. 如果这个解决方案不适合您,您可以尝试使用轮询机制,在一定的时间间隔内使用线程重新检查整个结构。

希望这有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接