2014-09-10 23 views
0

我使用的inotify在Linux上监控目录几级后的手表添加到新创建的目录。我的目录有50个子目录,我的目录树有20个深度。我能够监视目录及其所有子目录,直到这一点。我使用C++ STL向量来保存每个目录路径及其各自的观察描述符。当我递增添加8或10个新目录,即添加新的8-10新级别时,我会收到有关任何事件的通知,直到目录树中的第28或第30级为止。如果我在28或30级内创建一个新目录比我没有收到任何通知。的inotify - 无法在目录树

也面临这个问题的任何机构。

回答

0

您应该添加一些调试信息到你的应用程序中显示所创建的手表的数量。也许你正在达到数量限制。

您可以sysctl查询max_user_watches值:

$ sudo sysctl fs.inotify.max_user_watches 
fs.inotify.max_user_watches = 8192 

我也建议你检查的inotify_add_watch()在你的程序的返回值。如果达到手表总数的用户限制,则返回ENOSPC;如果路径名称是工具长(可能会发生,因为您创建了深度目录树),则返回ENAMETOOLONG