linux内核如何知道哪个inotify_handle有某个watch
据我了解,linux内核提供了“inotify机制”来监控文件系统。
根据inotify的说法,inotify_init()
返回fd以接收来自内核的inotify_event
。 (我知道内核会在其上写入 inotify_event
。)
1) 如果我使用 inotify_add_watch()
通过 inotify fd
添加新的手表,谁当监视的文件发生事件时,将在 inotify fd 上写入 inotify_event
。
2)(如果内核这样做的话)当内核检测到监视文件的事件时,内核如何决定哪个 inotify fd(inotify_instance)
必须使用此 inotify_event
进行更新?
I understood that linux kernel provides "inotify mechanism" to monitor file system.
According to inotify, inotify_init()
returns fd to receive inotify_event
from kernel.
(I understood kernel will write inotify_event
on it.)
1) And if I add new watch with the inotify fd
using inotify_add_watch()
, Who will write inotify_event
on inotify fd when the watched file has got an event.
2) (if kernel does,) when kernel detects an event for watched file, how does kernel decide which inotify fd(inotify_instance)
has to update with this inotify_event
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己研究了一下,答案是这样的:
inotify_add_watch()
时,inotify
会将inotify
watch 的一些信息存储到该文件的inode
结构中。然后,每当文件系统处理该文件时,它都会检查该文件的 inode 结构 - 是否存在 inotify 监视。如果
inotify
监视从inode
结构中找到的内容,inotify
会报告inotify_event
。My own research, this is the answer:
inotify_add_watch()
to certain file,inotify
stores some information ofinotify
watch into that file'sinode
structure.Then, whenever file system deals with that file, it checks the file's
inode
sturture - whether there existsinotify watches
or not. Ifinotify
watches found frominode
structure,inotify
reportsinotify_event
.