At the beginning of each line on descriptor 2, recordio inserts the prog process ID, along with < for input or > for output. At the end of each line it inserts +, a space, or [EOF]; a space indicates that there was a new line in the input or output, and [EOF] indicates the end of input or output.
recordio prints every packet of input and output immediately. It does not attempt to combine packets into coherent lines. For example,
could produce
5135 > cat: /dev/fd/8: Bad file descriptor
5135 > [EOF]
or
5135 > cat: +
5135 > /dev/fd/8+
5135 > : +
5135 > Bad file descriptor
5135 > [EOF]
if the cat program prints several packets.
recordio uses several lines for long packets to guarantee that each line is printed atomically.
recordio runs as a child process of prog. It exits when it sees the end of prog's output.
http://cr.yp.to/ucspi-tcp.html