使用inotify的正确方法是什么?

使用inotify的正确方法是什么?,第1张

使用inotify的正确方法是什么?
  • 文档(来自具有inotify的Monitor文件系统活动)

inotify
C API

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

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

read()
close()
还需要系统调用。给定描述符由产生
inotify_init()
,调用
read()
以等待警报。假定使用典型的文件描述符,应用程序将阻止等待事件接收,这些事件在流中表示为数据。从
inotify_init()
删除和释放所有活动的监视以及与inotify实例相关联的所有内存产生的文件描述符上的公共close()。(典型的引用计数注意事项在这里也适用。必须释放与实例关联的所有文件描述符,然后释放手表和inotify消耗的内存。)

  • 一个示例(来自Kernel Korner-介绍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上添加了一个监视程序,用于进行任何修改,创建文件或删除文件。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4972914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存