Я создал этот небольшой фрагмент, чтобы попытаться понять, как работает 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;
}