Сантехник (программа)
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Водопроводчик представляет в Plan 9 от Bell Labs и операционных систем Inferno собой механизм надежной одно- или многоадресной межпроцессной связи форматированных текстовых сообщений. Он использует протокол сетевых файлов Plan 9, 9P , а не специальный механизм IPC. [1]
Любое количество клиентов может прослушивать именованный порт (файл) на предмет сообщений. Порты и маршрутизация портов определяются правилами сантехники. Эти правила являются динамическими. Каждая прослушивающая программа получает копию соответствующих сообщений. Например, если данные /sys/lib/plumb/basic подключены по стандартным правилам, они отправляются в порт редактирования . Порт напишет копию сообщения каждому слушателю. В этом случае все работающие редакторы интерпретируют это сообщение как имя файла и откроют файл.
Сантехник — это файловый сервер 9P, предоставляющий эту услугу. Клиенты могут использовать libplumb для форматирования сообщений. Поскольку сообщения имеют формат 9P, они прозрачны для сети.
Пример
[ редактировать ]Ниже приводится пример правил сантехнических работ:
# these are generally in order from most specific to least, # since first rule that fires wins. addr=':(#?[0−9]+)' protocol='(https?|ftp|file|gopher|mailto|news|nntp|telnet|wais)' domain='[a−zA−Z0−9_@]+([.:][a−zA−Z0−9_@]+)*/?[a−zA−Z0−9_?,%#~&/\−]+' file='([:.][a−zA−Z0−9_?,%#~&/\−]+)*' # image files go to page type is text data matches '[a−zA−Z0−9_\−./]+' data matches '([a−zA−Z0−9_\−./]+).(jpe?g|gif|bit)' arg isfile $0 plumb to image plumb start page −w $file # URLs go to web browser type is text data matches $protocol://$domain$file plumb to web plumb start window webbrowser $0 # existing files, possibly tagged by line number, go to edit/sam type is text data matches '([.a−zA−Z0−9_/–]+[a−zA−Z0−9_/\−])('$addr')?' arg isfile $1 data set $file attr add addr=$3 plumb to edit plumb start window sam $file # .h files are looked up in /sys/include and passed to edit/sam type is text data matches '([a−zA−Z0−9]+\.h)('$addr')?' arg isfile /sys/include/$1 data set $file attr add addr=$3 plumb to edit plumb start window sam $file
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Пайк, Роб (2000). «Ежегодная техническая конференция USENIX 2000 г.» . www.usenix.org . Проверено 15 апреля 2024 г.
Внешние ссылки
[ редактировать ]- Plan 9 , том 1 Руководство программиста –
- Plan 9 , том 1 Руководство программиста –
- Plan 9 , том 1 Руководство программиста –
- Plan 9 , том 1 Руководство программиста –
- «Сантехника и другие коммунальные услуги», Роб Пайк
- Порт водопроводчика на Unix-подобные операционные системы.
- Расширение сантехники для urxvt