Я работаю с linux, и у меня есть каталог, который имеет подкаталоги и есть файлы внутри подкаталогов. Я должен следить за изменениями в файле. В С++ я использую boost. Я просматриваю все каталоги каждые 30 секунд и проверяю last_write_time. В принципе, он работает. Но каждый раз, когда это действие выполняется, мой процессор гаснет, и я вижу 15% -25% использования ЦП просто для этой программы в верхней части. Я читал об inotify. Если я использую inotify, у меня будет более или менее одинаковое использование ЦП или оно будет улучшено? Есть ли хорошие альтернативы тому, что я делаю?
Мониторинг изменений файлов С++ linux
Ответ 1
Когда вы используете inotify, вам не требуется опрашивать все файлы, чтобы проверить, есть ли изменения. Вы получаете систему обратного вызова, которая уведомляет вас об изменении отслеживаемого файла или каталога.
Ядро/файловая система уже имеет эту информацию, поэтому использование ресурсов/ЦП не просто переносится в другое приложение, оно фактически уменьшается.
Мониторинг активности файловой системы с помощью inotify предоставляет более подробную информацию о том, почему использовать inotify, показывает его основное использование и помогает настроить его.
Ответ 2
http://linux.die.net/man/7/inotify, это должно помочь вам избавиться от проблемы, с которой вы сталкиваетесь!