Правильное использование inotify
От: real_sba http://cellwar.xyz/
Дата: 20.11.12 17:44
Оценка:
Доброго времени суток, господа.

Казалось бы простой вопрос, прочитал man 7 inotify — иди кодь. Но у меня возник ряд вопросов.

1. Почему многие события дублируются по несколько раз? Например при использовании наблюдения IN_ALL_EVENTS (хотя это непринципиально) и сохранении файла example.txt в текстовом редакторе kate получаю следующий список событий:
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 32
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | qt_temp.B13220 | 256
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | qt_temp.B13220 | 32
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 1
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | qt_temp.B13220 | 2
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | qt_temp.B13220 | 8
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | qt_temp.B13220 | 64
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt~ | 128
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt~ | 4
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 16
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 2
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 32
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 2
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 8
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 32
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 16
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 32
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 1
19:28:28 DEBUG [src/CDirMonitor.cpp:74 - Process] /home/sba/projects/temp | example.txt | 16

Не уверен, но наверное это связано с тем что события действительно происходят по несколько раз. Например файл дважды закрывается без записи (IN_CLOSE_NOWRITE) и трижды открывается (IN_OPEN).

2. Непонятно почему разные события относящиеся к одному и тому же файлу не группируются? То-есть на выходе одна запись inotify_event с объединением всех событий.

3. Исходя из странности пунктов 1 и 2 — необходимо самому группировать одинаковые события чтобы по несколько раз не вызывать один и тот же обработчик события для файла?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.