inotify_add_watch

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函数进行事件读取。

  •