首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fanotify无法通过多线程程序监视整个系统的FAN_OPEN_PERM事件,也无法忽略目录

fanotify无法通过多线程程序监视整个系统的FAN_OPEN_PERM事件,也无法忽略目录
EN

Stack Overflow用户
提问于 2013-08-22 18:44:19
回答 1查看 516关注 0票数 0

我想通过一个多线程程序监视整个系统的主目录|mydir事件,并忽略一些目录(比如/ FAN_OPEN_PERM / FAN_CLOSE_WRITE )。我在main()中使用了fanotify_init()和fanotify_mark()作为:

//有没有办法使用FAN_GLOBAL_LISTENER?

fd = fanotify_init(FAN_CLOEXEC| FAN_NONBLOCK | FAN_CLASS_CONTENT | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS,O_RDONLY | O_LARGEFILE) ...

//标记"/“(不适用于多线程程序)或"/home”(适用)

fanotify_mark(fd,FAN_MARK_ADD | FAN_MARK_MOUNT,FAN_OPEN_PERM | FAN_CLOSE_WRITE | FAN_EVENT_ON_CHILD,AT_FDCWD,"/") ....

//现在,忽略目录

fanotify_mark(fd,FAN_MARK_ADD | FAN_MARK_ONLYDIR | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY,FAN_OPEN_PERM | FAN_CLOSE_WRITE | FAN_EVENT_ON_CHILD,AT_FDCWD,"/home/mydir")

在我的程序中,main()读取事件并将其传递给多个线程进行进一步处理。

问题: 1)在监控"/“的情况下,这个多线程程序会挂起,但是"/home”可以正常工作。2)我仍然收到"/home/mydir“(标记为"/home”&忽略"/home/mydir")的通知。

如何在多线程程序中毫无问题地标记整个系统?

如何使用ignore mask来忽略整个目录(递归)?(内核2.6.38-8-通用)

EN

回答 1

Stack Overflow用户

发布于 2013-10-23 04:46:01

阅读the man page

当需要特权才能打开文件时,FAN_OPEN_PERM标志会触发一个事件。如果你打开一个文件,比方说在/tmp中,它什么也不做。

相反,您应该使用FAN_OPEN。

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

https://stackoverflow.com/questions/18378280

复制
相关文章

相似问题

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