Я создал этот небольшой фрагмент, чтобы попытаться понять, как работает inotify. Мой тест очень прост: я запускаю код, затем открываю /home/qdii/test в любом редакторе, изменяю его и сохраняю файл. Ничего не произошло. Я снова изменяю файл и сохраняю, и отображается «событие получено». С этого момента повторное изменение файла больше ничего не вызовет.
Я ожидаю, что inotify будет выдавать «событие получено» каждый раз при изменении файла. Что я сделал не так?
#include <errno.h>
#include <sys/inotify.h>
#include <fcntl.h>
#include <assert.h>
#include <unistd.h>
#include <iostream>
int main()
{
const int fd = inotify_init();
inotify_add_watch(fd, "/home/qdii/test", IN_MODIFY);
while (true)
{
const size_t buf_size = sizeof(struct inotify_event);
char buf[buf_size];
if (read(fd, buf, buf_size) >= 0)
std::cout << "event received" << std::endl;
sleep(1);
}
return 0;
}