inotify_add_watch是一个Linux系统调用函数,用于在指定的文件或目录上添加一个inotify监听器。inotify是Linux内核中提供的一种机制,可以让用户空间程序监视文件系统中特定文件或目录的变化。
inotify_add_watch函数需要传入三个参数:inotify实例的文件描述符、被监听的文件或目录的路径和监听的事件类型。
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/inotify.h>
int main(int argc, char* argv[]) {
const char* path = "/tmp";
int inotify_fd = inotify_init();
if (inotify_fd == -1) {
perror("inotify_init");
exit(EXIT_FAILURE);
int watch_fd = inotify_add_watch(inotify_fd, path, IN_CREATE | IN_DELETE);
if (watch_fd == -1) {
perror("inotify_add_watch");
exit(EXIT_FAILURE);
printf("Watching '%s'...\n", path);
while (1) {
char buf[4096] __attribute__((aligned(__alignof__(struct inotify_event)))));
const struct inotify_event* event;
ssize_t len;
for (;;) {
len = read(inotify_fd, buf, sizeof(buf));
if (len == -1 && errno != EAGAIN) {
perror("read");
exit(EXIT_FAILURE);
if (len <= 0)
break;
for (char *ptr = buf; ptr < buf + len; ptr += sizeof(struct inotify_event) + event->len)
event = (const struct inotify_event*) ptr;
// Output event
close(inotify_fd);
return EXIT_SUCCESS;
该示例程序创建了一个inotify监听器,用于监视/tmp目录下的文件或目录创建和删除事件。程序首先调用inotify_init函数创建一个inotify实例,然后调用inotify_add_watch函数添加监听器,最后通过read函数进行事件读取。