18-10-2023
inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13, но может использоваться и с более ранними ядрами с помощью наложения патча. Основная сфера использования — в системах поиска (например Beagle), таким образом программе-индексатору не требуется сканировать всю файловую систему каждые несколько минут.
Для работы с функциями нужно подключить заголовочный файл sys/inotify.h.
int inotify_init()
Создает файловый дескриптор, из которого читаются все происходящие события.
int inotify_add_watch(int fd, const char * path, __u32 mask);
Создает уникальный (внутри файлового дескриптора) дескриптор наблюдения (watch descriptor), который используется для отождествления путей и происходящих событий. При этом, допускаются только те события, которые указаны в маске.
int inotify_rm_watch(int fd, __u32 wd);
Удаляет существующий дескриптор наблюдения.
События получаются с помощью традиционного системного вызова read, который читает в структуру inotify_event со следующими полями:
Идентификатор | Значение |
---|---|
wd | дескриптор наблюдения |
mask | маска событий |
cookie | метка синхронизации между IN_MOVED_FROM и IN_MOVED_TO |
len | длина имени файла |
name | имя файла относительно директории, для которой был создан дескриптор наблюдения |
Маска события является логическим ИЛИ следующих констант:
При генерации событий также могут быть использованы следующие константы:
Inotify.