PLUMBER(4) PLUMBER(4) NAME plumber - file system for interprocess messaging SYNOPSIS plumber [ -p plumbing ] DESCRIPTION The plumber is a user-level file server that receives, exam- ines, rewrites, and dispatches plumb(7) messages between programs. Its behavior is programmed by a plumbing file (default $HOME/lib/plumbing) in the format of plumb(7). Its services are posted via 9pserve(4) as plumb. and con- sist of two pre-defined files, plumb/send and plumb/rules, and a set of output ports for dispatching messages to appli- cations. Programs use fswrite (see 9pclient(3)) to deliver messages to the send file, and fsread to receive them from the corre- sponding port. For example, sam(1)'s plumb menu item or the B command cause a message to be sent to plumb/send; sam in turn reads from, by convention, plumb/edit to receive mes- sages about files to open. A copy of each message is sent to each client that has the corresponding port open. If none has it open, and the rule has a plumb client or plumb start rule, that rule is applied. A plumb client rule causes the specified command to be run and the message to be held for delivery when the port is opened. A plumb start rule runs the command but discards the message. If neither start or client is speci- fied and the port is not open, the message is discarded and a write error is returned to the sender. The set of output ports is determined dynamically by the specification in the plumbing rules file: a port is created for each unique destination of a plumb to rule. The set of rules currently active may be examined by reading the file plumb/rules; appending to this file adds new rules to the set, while creating it (opening it with OTRUNC) clears the rule set. Thus the rule set may be edited dynam- ically with a traditional text editor. However, ports are never deleted dynamically; if a new set of rules does not include a port that was defined in earlier rules, that port will still exist (although no new messages will be delivered there). FILES $HOME/lib/plumbing default rules file Page 1 Plan 9 (printed 11/17/24) PLUMBER(4) PLUMBER(4) /usr/local/plan9/plumb directory to search for files in include statements plumb mount name for plumber(4). SOURCE /usr/local/plan9/src/cmd/plumb SEE ALSO plumb(1), plumb(3), plumb(7) Page 2 Plan 9 (printed 11/17/24)