我想使用fanotify监视单个目录,但我得到的是监视整个文件系统。这是代码:
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,然后我们要求标记该相对路径。
我正在处理线程,但我不认为这是问题所在。也许我使用了错误的标志,或者我根本没有使用正确的标志。
发布于 2014-01-07 06:54:53
我面临着这个问题,当我们使用FAN_EVENT_ON_CHILD时,fanotify会监视指定目录/文件的整个挂载点。使用FAN_ONDIR只监视目录时,扇在线只监视该目录中的文件,而不是子目录。
因此,您必须监视整个挂载点或没有其子目录的目录.注意,您可以在监视整个挂载点时跳过一些文件/目录。我希望这会对你有所帮助:)
https://stackoverflow.com/questions/19909063
复制相似问题