我想使用 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;
}
如果 pathname("some-relative-path") 是相对的,并且我们已将 fds 设置为AT_FDCWD ,那么我已从fanotify 的手册页中读取,然后我们要求标记该相对路径。
我正在使用线程,但我认为这不是问题所在。也许我使用了错误的某些标志,或者我根本没有使用正确的标志。