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

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

2 ответов


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

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

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


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