tengo un programa de fuente cerrada que imprime la salida a la salida estándar. necesito analizar la salida. así que redirijo la salida a una fifo (desde la cual puedo leer en el proceso padre que bifurca y ejecuta el binario) usando dup2 y luego ejecuté el programa. el problema es que las llamadas fprintf en el archivo se almacenan en búfer porque ahora está escribiendo en un archivo.forzando a un programa a purgar su salida estándar cuando se redirige
intenté llamar a setvbuf con _IONBF en stdout antes de llamar a exec. pero el problema todavía existe
¿por qué no funciona el setvbuf en mi caso?
¿Cómo puedo forzar la salida para que se vacíe?
i tenedor a cabo un proceso, llame setvbuf en el proceso de niño y luego exec una secuencia de comandos shell que los ejecutivos otro script que finalmente ejecutivos de TI el binario. ¿Puedo cambiar el comando ejecutivo final (bash) para que deshabilite el almacenamiento en búfer de alguna manera? –
Repito, es inútil llamar a setvbuf() antes de la ejecución: ¡ninguno de los estados de la biblioteca C runtime se conserva en exec()! ¡El proceso final en el que exec() ni siquiera * usa * el CRT! (Improbable pero posible.) –
bien, estoy probando el enfoque pty ver http://stackoverflow.com/questions/2056858/cannot-write-to-pty-linux –