Доброго времени суток, господа.
Казалось бы простой вопрос, прочитал 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 — необходимо самому группировать одинаковые события чтобы по несколько раз не вызывать один и тот же обработчик события для файла?