- 文档(来自具有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上添加了一个监视程序,用于进行任何修改,创建文件或删除文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)