UNIX / Linux IPC: Lectura desde un pipe. ¿Cómo saber la longitud de los datos en tiempo de ejecución?

Tengo un proceso hijo que genera un resultado de longitud variable y luego lo envía al padre utilizando una tubería half duplex. En el padre, ¿cómo uso la función read ()? Dado que los datos pueden tener una longitud diferente cada vez, ¿cómo puedo, en tiempo de ejecución, saber el tamaño de los datos para hacer cualquier malloc () para un búfer? ¿Se puede usar la función fstat () en un descriptor de archivo de tubería?

Sé que la función read () leerá un número específico de bytes pero devolverá 0 si se llega al final del archivo (no al carácter EOF) antes de que se hayan leído los bytes solicitados.

Estoy ejecutando específicamente Ubuntu GNU / Linux con un Kernel 2.6.27-9.

Todos los ejemplos en la Programación avanzada de Richard Stevens en el entorno UNIX han especificado la longitud de los datos al escribir en la tubería o se han basado en la función fgets () stdio.h. Como me preocupa la velocidad, quiero evitar el uso de stdio.h tanto como sea posible.

¿Será esto necesariamente más rápido con la memoria compartida?

Gracias, -Dhruv

Respuestas a la pregunta(6)

Su respuesta a la pregunta