fsnotify 本质上就是对系统能力的一个浅层封装,主要封装了操作系统提供的两个机制:
1,inotify 机制 2,epoll 机制
1,inotify机制
什么是inotify机制?
这是一个内核用于通知用户空间程序文件系统变化的机制。
其实inotify机制的诞生源于一个通用的需求,由于IO/硬件管理都在内核,但用户是有获悉内核时间的强烈需求,比如磁盘的热插拔,文件的增删改。这里就诞生了三个异曲同工的机制:hoplug 机制,udev管理机制,inotify机制。
inotify 怎么实现监控的?
inotify 支持监听的事件非常多,除了增删改,还有访问,移动,打开,关闭,设备卸载等等事件。
内核要上报这些文件 api 事件必然要采集这些事件。在哪一个内核层次采集的呢?
统调用 -> vfs -> 具体文件系统( ext4 )-> 块层 -> scsi 层
**答案是:vfs 层。**其实这个很容易理解,这是必然的,因为这是所有“文件”操作的入口。