Solucionado!
Al final la solución estaba en lo más sencillo, mientras escribia en el fichero en el while, lo escrbía a la vez por pantalla. Una tontería de la que no me había dado cuenta XD.
Hago otra pregunta: mi fichero, en el que escribo, tiene al final el fd=0, al ser un fichero, estaría bien hacer un close(0), no? Ya que no se trata de stdIn sino de ese fichero.