inotify

Материал из Xgu.ru

Перейти к: навигация, поиск

inotify — механизм операционной системы Linux, предназначенный для оповещения об изменениях в файловой системе. Доступен непосредственно в Си, а также в многочисленных библиотеках других языков.

Например:

В командной строке доступен с помощью inotofy-tools Github.png.

Количество одновременно отслеживаемых файлов ограничено. По умолчанию 8192 (точнее: /proc/sys/fs/inotify/max_user_watches ).

В других операционных системах есть, как правило, похожие механизмы

  • в Mac OS X: fsevents;
  • в Windows: FileSystemWatcher.

[править] Сборка в реальном времени

Использование inotify (или других механизмов сообщений файловой системы) для выполнения сборки в реальном времени очень логично. При сборке больших проектов с большим количеством различных зависимостей даже выполнение холостого прохода может происходить несколько секунд (а в некоторых случаях то и минут).

Логично сделать так, что сборочная система будет всё время наблюдать за деревом исходного кода и при изменении файлов автоматически пересобирать их.

В этом случае не нужно:

  • каждый раз запускать команду пересборки;
  • не нужно заново выстраивать граф зависимостей;
  • не нужно сканировать зависимости в поисках изменений.

В зависимости от размера проекта и от количества зависимостей в нём может быть интересен один из этих пунктов.

Простейшую автоматизацию сборки можно выполнить так:

 while true; do inotifywait -e modify files...; echo modified; make; done

Система сборки, которая построена по такому принципу:

[править] Дополнительная информация

Источник — «http://xgu.ru:81/wiki/inotify»