linux文件系统变化通知机制(inotify)

本文介绍了Linux的inotify机制,一种用于监视文件系统事件的机制,自2.6.13内核开始引入。通过inotify,开发者可以实时获取文件或目录的创建、打开、修改等事件,实现对文件系统变化的监控。文章详细讲解了API、事件结构体、事件列表,并给出了测试程序的编译和运行步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux文件系统变化通知机制(inotify)

如果我们需要实时的了解一个文件夹或者目录的变化,我们可以使用linux文件系统变化通知机制(inotify),只要有变化,都会收到通知。

inotify是用来监视文件系统事件的机制,在linux 2.6.13内核中引入。

该机制可以用来监视文件和目录,当文件或目录发生变化时,内核会将文件或目录的变化发送给inotify文件描述符,在应用层只需调用read()就可以读取这些事件,非常的方便。更好的是,inotify文件描述符还可以使用select、poll、epoll这些接口来监听,当有事件发生是,inotify文件描述符会可读

1、api介绍


#include <sys/inotify.h>

/* Create and initialize inotify instance.  */
int inotify_init (void);
(1) inotify_init()在内核中创建一个实体,并返回一个文件描述符fd。
(2) 成功的话返回文件描述符,失败返回-1/* Add watch of object NAME to inotify instance FD.  Notify about events specified by MASK.  */
int inotify_add_watch (int __fd, const char *__name, uint32_t __mask);
创建监视器要提供:
(1) inotify实例inotify_init返回的文件描述符:fd。
(2) 监视目标路径:name。
(3) 监视事件列表:mask。
(4) 如果成功,返回监视器描述符wd,否则返回-1/* Remove the watch specified by WD from the inotify instance FD.  */
int inotify_rm_watch (int __fd, int __wd);
用于从监视器列表中删除一个监视器。
(1) fd为inotify_init返回的文件描述符。
(2) wd为inotify_add_watch返回监视器描述符。
(3) 返回值:0 成功,-1 失败。

2、事件结构体

/* Structure describing an inotify event.  */
struct inotify_event
{
  int wd;       /* Watch descriptor.  */
  uint32_t mask;    /* Watch mask.  */
  uint32_t cookie;  /* Cookie to synchronize two events.  */
  uint32_t len;     /* Length (including NULs) of name.  */
  char name;    /* Name.  */
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值