URI: 
       tplumber.4 - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tplumber.4 (2674B)
       ---
            1 .TH PLUMBER 4
            2 .SH NAME
            3 plumber \- file system for interprocess messaging
            4 .SH SYNOPSIS
            5 .B plumber
            6 [
            7 .B -f
            8 ]
            9 [
           10 .B -p
           11 .I plumbing
           12 ]
           13 .SH DESCRIPTION
           14 The
           15 .I plumber
           16 is a user-level file server that receives, examines, rewrites, and dispatches
           17 .MR plumb (7)
           18 messages between programs.
           19 Its behavior is programmed by a
           20 .I plumbing
           21 file (default
           22 .BR $HOME/lib/plumbing )
           23 in the format of
           24 .MR plumb (7) .
           25 .PP
           26 Its services are posted via
           27 .MR 9pserve (4)
           28 as
           29 .BR plumb ,
           30 and consist of two
           31 pre-defined files,
           32 .B plumb/send
           33 and
           34 .BR plumb/rules ,
           35 and a set of output
           36 .I ports
           37 for dispatching messages to applications.
           38 .PP
           39 Programs use
           40 .B fswrite
           41 (see
           42 .MR 9pclient (3) )
           43 to deliver messages to the
           44 .B send
           45 file, and
           46 .I fsread
           47 to receive them from the corresponding port.
           48 For example,
           49 .MR sam (1) 's
           50 .B plumb
           51 menu item or the
           52 .B B
           53 command cause a message to be sent to
           54 .BR plumb/send ;
           55 .B sam
           56 in turn reads from, by convention,
           57 .B plumb/edit
           58 to receive messages about files to open.
           59 .PP
           60 A copy of each message is sent to each client that has the corresponding port open.
           61 If none has it open, and the rule has a
           62 .B plumb
           63 .B client
           64 or
           65 .B plumb
           66 .B start
           67 rule, that rule is applied.
           68 A
           69 .B plumb
           70 .B client
           71 rule causes the specified command to be run
           72 and the message to be held for delivery when the port is opened.
           73 A
           74 .B plumb
           75 .B start
           76 rule runs the command but discards the message.
           77 If neither
           78 .B start
           79 or
           80 .B client
           81 is specified and the port is not open,
           82 the message is discarded and a write error is returned to the sender.
           83 .PP
           84 The set of output ports is determined dynamically by the
           85 specification in the plumbing rules file: a port is created for each unique
           86 destination of a
           87 .B plumb
           88 .B to
           89 rule.
           90 .PP
           91 The set of rules currently active may be examined by reading the file
           92 .BR plumb/rules ;
           93 appending to this file adds new rules to the set, while
           94 creating it (opening it with
           95 .BR OTRUNC )
           96 clears the rule set.
           97 Thus the rule set may be edited dynamically with a traditional text editor.
           98 However, ports are never deleted dynamically; if a new set of rules does not
           99 include a port that was defined in earlier rules, that port will still exist (although
          100 no new messages will be delivered there).
          101 .PP
          102 The
          103 .B -f
          104 option causes the process to run in the foreground.
          105 .SH FILES
          106 .TF $HOME/lib/plumbing
          107 .TP
          108 .B $HOME/lib/plumbing
          109 default rules file
          110 .TP
          111 .B \*9/plumb
          112 directory to search for files in
          113 .B include
          114 statements
          115 .TP
          116 .B plumb
          117 mount name for
          118 .MR plumber (4) .
          119 .SH SOURCE
          120 .B \*9/src/cmd/plumb
          121 .SH "SEE ALSO"
          122 .MR plumb (1) ,
          123 .MR plumb (3) ,
          124 .MR plumb (7)
          125 .\" .SH BUGS
          126 .\" .IR Plumber 's
          127 .\" file name space is fixed, so it is difficult to plumb
          128 .\" messages that involve files in newly mounted services.