首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我做错什么了?

我做错什么了?
EN

Stack Overflow用户
提问于 2013-11-11 14:45:21
回答 1查看 1.1K关注 0票数 0

我想使用fanotify监视单个目录,但我得到的是监视整个文件系统。这是代码:

代码语言:javascript
复制
fa_fd = fanotify_init(FAN_CLOEXEC | FAN_CLASS_CONTENT, O_RDONLY | O_LARGEFILE | O_CLOEXEC);

static uint64_t event_mask = 
(FAN_ACCESS |         /* File accessed */
FAN_MODIFY |         /* File modified */
FAN_CLOSE_WRITE |    /* Writable file closed */
FAN_OPEN |           /* File was opened */
FAN_EVENT_ON_CHILD); /* We want to be reported of events in   files of the directory */

filesystem::path path("some-relative-path");
if (!filesystem::exists(path)){
    filesystem::create_directory(path);
}

if (fanotify_mark(fa_fd,
    FAN_MARK_ADD,
    event_mask,
    AT_FDCWD,
    "some-relative-path") >= 0)
{
    return NO_ERROR;
}

我从扇奥蒂的手册页上读到如果路径名(“一些相对路径”)是相对的,我们已经将fds设置为AT_FDCWD,然后我们要求标记该相对路径。

我正在处理线程,但我不认为这是问题所在。也许我使用了错误的标志,或者我根本没有使用正确的标志。

EN

回答 1

Stack Overflow用户

发布于 2014-01-07 06:54:53

我面临着这个问题,当我们使用FAN_EVENT_ON_CHILD时,fanotify会监视指定目录/文件的整个挂载点。使用FAN_ONDIR只监视目录时,扇在线只监视该目录中的文件,而不是子目录。

因此,您必须监视整个挂载点或没有其子目录的目录.注意,您可以在监视整个挂载点时跳过一些文件/目录。我希望这会对你有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19909063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档