gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:36 25 4
gpt4 key购买 nike

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

有人遇到过这个问题吗?

最佳答案

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

您可以使用sysctl查询max_user_watches值:

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

我还建议您检查程序中 inotify_add_watch() 的返回值。如果达到了监视总数的用户限制,它可能会返回 ENOSPC;如果路径名太长,则可能会返回 ENAMETOOLONG(在您创建深层目录树时可能会发生这种情况)。

关于c++ - inotify - 在目录树中的几个级别之后无法将监视添加到新创建的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com