inotify_add_watch(2) - Linux 手册页

名称

inotify_add_watch - 向已初始化的 inotify 实例添加监视

概要

#include <sys/inotify.h>

int inotify_add_watch(int fd, const char *pathname, uint32_t mask);

描述

inotify_add_watch() 为位于 pathname 中指定位置的文件添加新的监视,或修改现有的监视;调用者必须对此文件具有读取权限。fd 参数是指向要修改其监视列表的 inotify 实例的文件描述符。要为 pathname 监控的事件由 mask 位掩码参数指定。有关可以在 mask 中设置的位的描述,请参阅 inotify(7)

成功调用 inotify_add_watch() 会返回与此 inotify 实例的 pathname 关联的唯一监视描述符。如果 pathname 之前未被此 inotify 实例监视,则会分配新的监视描述符。如果 pathname 已经正在被监视,则返回现有监视的描述符。

监视描述符由后续从 inotify 文件描述符进行的 read(2) 读取返回。这些读取获取 inotify_event 结构体(参见 inotify(7)),指示文件系统事件;该结构体内的监视描述符标识发生事件的对象。

返回值

成功时,inotify_add_watch() 返回一个非负监视描述符。发生错误时返回 -1,并且 errno 会被相应地设置。

错误

EACCES
不允许访问给定文件。
EBADF
给定的文件描述符无效。
EFAULT
pathname 指向进程可访问地址空间之外的位置。
EINVAL
给定的事件掩码不包含任何有效的事件;或者 fd 不是 inotify 文件描述符。
ENOENT
pathname 中的一个目录组件不存在或是一个断开的符号链接。
ENOMEM
内核内存不足。
ENOSPC
达到了 inotify 监视总数的用户限制,或者内核未能分配所需的资源。

版本

Inotify 合并到 2.6.13 Linux 内核中。

符合

此系统调用是 Linux 特有的。

参见

inotify_init(2), inotify_rm_watch(2), inotify(7)