D. J. Bernstein

The recordio program

recordio records the input and output of a program.


     recordio prog
recordio runs prog. It prints lines to descriptor 2 showing the input and output of prog.

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,

     recordio sh -c 'cat /dev/fd/8 2>&1' > /dev/null
could produce
     5135 > cat: /dev/fd/8: Bad file descriptor 
     5135 > [EOF]
     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.