Использование плюмбинга
Плюмбинг — механизм динамического связывания одновременно выполняющихся интерактивных программ, позволяющий управлять обменом сообщениями между ними. Для него написан набор инструкций (см. plumb(6)) для обработки поступающих сообщений и их отправки приложениям.
plumber(4) является файловым сервером, который выполняет обработку и отправку сообщений. Он работает с любым приложением, использующим этот механизм, но только в области пользователь-интерфейс, механизм позволяет пользователю указывать имя файла или URL и обрабатывает связанный ресурс с подходящим приложением.
Примеры
В командной оболочке rc вы можете выбрать фрагмент текста, нажать кнопку 2 мыши и выбрать из меню пункт «plumb». В зависимости от того, какой текст, plumber может выполнять различные действия. К примеру,
- файлы .ps, .pdf, или .dvi запускают программу просмотра page(1);
- файлы .gif, .jpg, .png, .ppm также запускают программу просмотра page(1);
- сообщение ошибки компилятора с указанием файла и номера строки запускает текстовый редактор по умолчанию, чтобы открыть этот файл с данным номером строки;
- .h выполняет поиск в каталоге /sys/include для данного заголовка и открывает его в текстовом редакторе по умолчанию;
- при выводе man-страницы запускается программа man(1);
- URL запускает броузер по умолчанию для данной страницы.
Хорошая хитрость
Пространство имен в Plan 9 — локальное. Т. е., если вы работаете с приложением, то пространство имен раздваивается, вы не можете работать с этим пространством имен в других приложениях. Конкретный пример, вы не можете подмонтировать удаленный файловый сервер а затем сплюмбинговать его в другое запущенное приложение. Вот неплохая хитрость, которая позволяет обходить это ограничение:
srvfs plumbspace /n plumber rfork n mount -b /srv/plumbspace /n
Добавьте эти строки в файл /lib/profile (перед запуском rio) и каталог /n — теперь косвенная часть пространства имен, которая может использоваться во всех приложениях плюмбером. Все, что нужно использовать в нем:
type is text data matches 'Local (.*)' plumb to none plumb start rc -c $1
К примеру, вам нужно подмонтировать локальный диск kfs и отредактировать в нем файл. Откройте новое окно оболочки и выполните:
disk/kfs plumb 'Local mount /srv/kfs /n/kfs'
и файлы нового диска будут просматриваться во всех приложениях системы.
Дополнительные ссылки
Plumbing and Other Utilities — документ о создании и реализации системы плюмбинга.
Copyright © 2003 Перевод Андрей С. Кухар. Последняя модификация 22.08.2003