我在Linux上使用inotify来监控一个目录。我的目录有50个子目录,我的目录树有20层深。到目前为止,我能够监控目录及其所有子目录。我使用C++ STL向量来保存每个目录的路径和它们各自的监视描述符。当我递归地添加8或10个新目录,即添加新的8-10个新级别时,我会收到关于目录树中的第28或30个级别的任何事件的通知。如果我在第28层或第30层创建一个新目录,则不会收到任何通知。
有没有人遇到过这个问题。
发布于 2014-09-10 21:07:55
您应该向应用程序中添加一些调试信息,以显示创建的监视数量。也许你正在达到inotify手表的数量限制。
可以使用sysctl查询max_user_watches的值
$ sudo sysctl fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192我还建议您在程序中检查inotify_add_watch()的返回值。如果达到了用户对监视总数的限制,则可能返回ENOSPC;如果路径名是长工具,则返回ENAMETOOLONG (这可能是因为您创建了一个很深的目录树)。
https://stackoverflow.com/questions/25764398
复制相似问题