Pregunta
Entonces mi pregunta es si de alguna manera puedo enviar datos a mi programa y luego enviar los mismos datos Y su resultado a otro programa sin tener que crear un archivo temporal (en mi caso ouputdata.txt). Preferiblemente utilizando tuberías de Linux / bash.
Actualmente hago lo siguiente:
cat inputdata.txt | ./MyProg > outputdata.txt
cat inputdata.txt outputdata.txt | ./MyProg2
Solución
Opción 1: arregle MyProg
para escribir la salida combinada de la entrada y su propia salida. Entonces puedes hacer esto.
./MyProg <inputdata.txt | ./MyProg2
Opción 2: si no puede arreglar MyProg
para escribir tanto la entrada como la salida, debe fusionarla.
./MyProg <inputdata.txt | cat inputdata.txt - | ./MyProg2
Otros consejos
Aquí hay otra forma, que se puede extender para juntar la salida de dos programas:
( Prog1; Prog2; Prog3; ... ) | ProgN
Eso al menos funciona en Bash.