inotify - 无法在目录树中的几个级别之后将监视添加到新创建的目录

时间:2014-09-10 11:37:46

标签: c++ linux filesystems

我在Linux上使用inotify来监控目录。我的目录有50个子目录,我的目录树深20级。我能够监视目录及其所有子目录,直到这一点。我使用C ++ STL向量来保存每个目录路径及其各自的监视描述符。当我递归地添加8或10个新目录,即添加新的8-10个新级别时,我会收到有关目录树中第28或第30级别之前的任何事件的通知。如果我在28或30级内创建一个新目录,而不是我没有得到任何通知。

是否有任何机构遇到此问题。

1 个答案:

答案 0 :(得分:0)

您应该向应用程序添加一些调试信息,以显示创建的监视数量。也许你达到了inotify手表限制的数量。

您可以使用max_user_watches

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

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