Linux C使用inotify API

问题

监控文件/目录变化

解决

使用inotify API,它是Linux文件系统监控的API,包括文件或目录的创建、修改和删除。

使用步骤

  1. 使用inotify_init()创建一个inotify实例;
  2. 使用函数inotify_add_watch()添加要监控的目录或文件以及要监控的事件。我们需要指定诸如ON CREATE, ON ACCESS, ON MODIFY这些事件;
  3. 等待事件发生,读取缓存,缓存中包含一个或多个发生的事件,使用read()或者select()
  4. 处理已经发生的事件,然后返回第3步等待新事件的发生,以此往复;
  5. 使用函数inotify_rm_watch()移除监视描述符;
  6. 关闭inotify实例

示例

#include<stdio.h>
#include<sys/inotify.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
#include<fcntl.h> // library for fcntl function
 
#define MAX_EVENTS 1024  /* Maximum number of events to process*/
#define LEN_NAME 16  /* Assuming that the length of the filename
won't exceed 16 bytes*/
#define EVENT_SIZE  ( sizeof (struct inotify_event) ) /*size of one event*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rsync是一个用于文件同步的工具,可以在本地和远程服务器之间进行文件的复制和同步。而inotifyLinux系统中的一个文件系统事件监控框架,可以实时监控文件系统中的事件,比如文件的修改、删除、创建等。通过结合rsync和inotify,可以实现文件的自动同步功能。 在给出的引用\[1\]中,是一个使用rsync和inotify实现自动同步的脚本示例。脚本中定义了一些变量,包括源路径、日志文件、rsync服务器的地址、用户名、密码等。然后通过inotifywait命令监控源路径下的文件系统事件,并在事件发生时使用rsync命令将文件同步到远程服务器。 引用\[2\]提到了rsync的其他功能,包括双向同步和使用sersync2实时同步多个远程服务器。同时还提到了inotify作为高效实时的Linux文件系统事件监控框架。 引用\[3\]是修改rsync配置文件的示例,将disable选项改为no,表示启用rsync服务器。 综上所述,通过使用rsync和inotify,可以实现Linux系统中的文件同步和实时监控功能。 #### 引用[.reference_title] - *1* *2* *3* [Linux下同步工具inotify+rsync使用详解](https://blog.csdn.net/wuzhongchao/article/details/42364039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值