inotify
Материал из Xgu.ru
inotify — механизм операционной системы Linux, предназначенный для оповещения об изменениях в файловой системе. Доступен непосредственно в Си, а также в многочисленных библиотеках других языков.
Например:
- pyinotify , в Python
- node-inotify , в JavaScript/Node.js
- node-inotify-plusplus , в JavaScript/Node.js (усовершенствованный интерфейс)
В командной строке доступен с помощью inotofy-tools .
Количество одновременно отслеживаемых файлов ограничено. По умолчанию 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
Система сборки, которая построена по такому принципу:
[править] Дополнительная информация
- Node.JS: How does “fs.watchFile” work? — небольшое объяснение на тему, хотя fs.watchFile напрямую к inotify не относится.