Además de usar un archivo temporal para ayudar, ¿hay alguna forma en que el programa pueda almacenar la entrada de la memoria intermedia stdinpero no la envíe hasta que obtenga el contenido EOF? Tampoco quiero usar una variable de shell (por ejemplo buffer=$(cat)).
Este programa debe comportarse de la siguiente manera (suponga que el nombre del programa es buffered-cat):
$ buffered-cat
line 1
line 2
line 3
^D # Ctr-D here(End of Line)
Ahora que recibió el programa ^D, buffered-catel contenido sale
line 1
line 2
line 3
sortpara este propósito. Obviamente tiene efectos secundarios que pueden ser indeseables.