Provided by: multitee_3.0-6_amd64 bug

NAME

       multitee - send multiple inputs to multiple outputs

SYNTAX

       multitee [ -bsize ] [ -vQq ] [ fd-fd,fd,fd...  ] ...

DESCRIPTION

       multitee  sends  multiple inputs to multiple outputs.  Given an argument of the form fdin-
       fdout,fdout,fdout...  it will send all input on file descriptor fdin  to  each  descriptor
       fdout.  It will exit when all fdin are closed.  Several arguments may specify outputs from
       the same fdin.

       -fdout and ,fdout are equivalent.  If there is an error of any sort (including SIGPIPE) in
       writing  to  fdout, multitee prints a warning on stderr and forgets fdout entirely.  (This
       doesn't affect reads on fdin.)  If -fdout is replaced by :fdout then  multitee  will  exit
       upon any SIGPIPEs from that descriptor.

       Furthermore, efd means that as soon as fdin reaches end of file, fd is considered to reach
       EOF as well.  multitee will warn about any input errors and then treat them like EOF.

       Unlike tee, multitee tries its best to continue processing all descriptors even while some
       of  them  are  blocked.  However, it will get stuck reading if someone else is reading the
       descriptor and grabs the input first; it will get stuck writing if an  input  packet  does
       not  fit  in  an  output  pipe.   (If  the  output descriptor has NDELAY set, and multitee
       receives EWOULDBLOCK, it  writes  one  byte  at  a  time  to  avoid  pipe  synchronization
       problems.)   While  it  is  tempting  to set the descriptors to non-blocking mode, this is
       dangerous: other processes using the same open file may not be able to deal  with  NDELAY.
       It  is  incredible that none of the major UNIX vendors or standards committees has come up
       with true per-process non-blocking I/O.  (Under BSD 4.3 and its variants,  multitee  could
       send  timer  signals to itself rapidly to interrupt any blocking I/O. However, this cannot
       work under BSD 4.2, and is generally more trouble than it's worth.)   A  program  can  set
       NDELAY before invoking multitee if it knows that no other processes will use the same open
       file.

       multitee will also temporarily stop reading an input descriptor if more  than  8192  bytes
       are  pending on one of its output descriptors. This does not affect independent fdin-fdout
       pairs.

       multitee has several flags:

       -bsize      Change input buffer size from 8192 to size.  Unlike the  previous  version  of
                   multitee,  this  version  does  not  require output buffers, and does not copy
                   bytes anywhere between read() and write().

       -v          Verbose.

       -q          Quiet.  multitee will not use  stderr  in  any  way  (except,  of  course,  if
                   descriptor 2 is specified in an argument).

       -Q          Normal level of verbosity.

EXIT VALUE

       0  normally.   1  for  usage  messages.   3  if multitee runs out of memory.  4 in various
       impossible situations.

DIAGNOSTICS

       fatal: out of memory
              multitee has run out of memory.

       warning: cannot read descriptor
              Self-explanatory.

       warning: cannot write descriptor
              Self-explanatory.

EXAMPLES

       multitee 0-1,4,5 4>foo 5>bar

       Same as tee foo bar except for better blocking behavior.

       multitee 0:1 3:1 4:1,2 6:7

       Merge several sources into the output, meanwhile copying 6 to 7 and recording 4's input in
       2.

       tcpclient servermachine smtp multitee 0:7 6:1e0

       Same as mconnect on Suns.  The e0 tells multitee to quit as soon as the network connection
       closes.

RESTRICTIONS

       multitee expects all descriptors involved to be open.  Currently a closed descriptor  acts
       like an open descriptor which can never be written to.

BUGS

       None known.

VERSION

       multitee version 3.0, 7/22/91.

AUTHOR

       Placed into the public domain by Daniel J. Bernstein.

SEE ALSO

       tee(1)

                                                                                      multitee(1)