мониторинг изменений файла c ++ linux

Я работаю с Linux, и у меня есть каталог, который имеет подкаталоги и есть файлы
внутри подкаталогов. Я должен следить за изменениями в файле. В C ++ я использую boost. Я прохожу все каталоги каждые 30 секунд и проверяю last_write_time. В принципе это работает. Но каждый раз, когда это действие выполняется, мой процессор сходит с ума, и я вижу 15% -25% загрузки процессора
только для этой программы в топе. Я читал об inotify. Если я использую inotify, будет ли у меня более или менее такое же использование процессора, или оно будет улучшено? Есть ли хорошие альтернативы тому, что я делаю?

13

Решение

Когда вы используете inotify, вам не требуется опрашивать все файлы, чтобы проверить, есть ли изменения. Вы получаете систему обратного вызова, которая уведомляет вас об изменении просматриваемого файла или каталога.

Ядро / файловая система уже имеет эту информацию, поэтому использование ресурсов / ЦП не просто переносится в другое приложение, оно фактически сокращается.

Мониторинг активности файловой системы с помощью inotify предоставляет более подробную информацию о том, почему использовать inotify, показывает его основное использование и помогает вам настроить его.

14

Другие решения

http://linux.die.net/man/7/inotify это должно помочь вам избавиться от проблемы, с которой вы столкнулись!

1

По вопросам рекламы [email protected]