我想在Linux上使用inotify机制.我想让我的应用程序知道文件aaa何时被更改.你能给我一个样品吗?怎么做?

推荐答案

The 100 C API

inotify提供三个系统调用来构建各种文件系统监视器:

  • inotify_init()在内核中创建inotify子系统的一个实例,成功时返回一个文件描述符,失败时返回-1.与其他系统调用一样,如果inotify_init()失败,请判断errno以进行诊断.
  • 顾名思义,inotify_add_watch()加了watch.每个监视必须提供一个路径名和一个相关事件列表,其中每个事件由一个常量指定,例如IN_MODIFY.要监视多个事件,只需在每个事件之间使用C-between中的逻辑or-the-pipe(|)运算符.如果inotify_add_watch()成功,调用将返回注册手表的唯一标识符;否则返回-1.使用标识符更改或删除关联的手表.
  • inotify_rm_watch()只手表.

read()close()系统调用也是必需的.给定inotify_init()生成的描述符,调用read()等待alert .假设是一个典型的文件描述符,应用程序块将等待事件的接收,这些事件在流中表示为数据.inotify_init()生成的文件描述符上的common close()删除并释放所有活动手表以及与inotify实例关联的所有内存.(这里也适用典型的引用计数警告.在释放手表和inotify消耗的内存之前,必须关闭与实例关联的所有文件描述符.)

#include "inotify.h"  
#include "inotify-syscalls.h"  
int wd;   
wd = inotify_add_watch (fd,   
            "/home/rlove/Desktop", IN_MODIFY | IN_CREATE | IN_DELETE);
if (wd < 0)
      perror ("inotify_add_watch");

本例在/home/rlove/Desktop目录中添加了一个监视,用于任何修改、文件创建或文件删除.

Linux相关问答推荐

获取Perl文件::Tail开始在最后流传输文件

是否可以在Bash正则表达式中排除?

如何检测文件系统是否支持权限?

如何让xargs对 bash 脚本中find命令找到的所有文件执行?

仅查找并保留有效邮箱并删除无效记录,AWK

如何在充满 csv 的目录中获得不同的值计数

如何在不进行轮询且不吃掉其他人子进程的退出代码的情况下等待一组子进程(并且只有它们)?

删除一行和它之前的一行

RabbitMQ 安装后没有自动启动

如何拆分多个分隔符但将它们保留在方括号之间?

在 bash 中查找匹配多个模式的文件

ftell 在文件描述符上?

如何计算列的平均值

有没有办法在整个项目代码中的某个日期之后找出更改的文件?

bash 脚本中的自动 docker 登录

如何在 Linux 上传递带感叹号的参数?

比较两个图像的 python/linux 方式

如何让 cron 每N分钟运行一次,其中 n % 5 == 1?

是否有git sed或类似功能?

cat、grep 和 cut - 翻译成 python