Мониторинг изменений файлов С++ linux

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

Ответ 1

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

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

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

Ответ 2

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