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目录中添加了一个监视,用于任何修改、文件创建或文件删除.