¿Cómo se borran las memorias intermedias de salida cuando el programa se bifurca?

StackOverflow https://stackoverflow.com/questions/343035

  •  19-08-2019
  •  | 
  •  

Pregunta

Tengo un programa que escribe en un ARCHIVO * cgiOut y justo después de haber escrito en la secuencia, necesito bifurcar y ejecutar un proceso en segundo plano. El problema es que después de la bifurcación, la secuencia FILE * parece desaparecer a veces y obtengo una salida duplicada (después de la bifurcación, todos los archivos abiertos se cierran, lo que supongo que hace que se vacíen los búferes). ¿Cómo puedo evitar esto? No quiero cerrar el archivo en el proceso maestro ya que se abre en una biblioteca y creo que es un socket o una tubería.

¿Fue útil?

Solución

No estoy seguro de entender tu pregunta, pero si quieres asegurarte de que tus buffers cgiOut estén vacíos antes de fork () puedes usar fflush ( ) en la transmisión justo antes de fork () . Eso debería obligar a los buffers a enjuagarse.

Puede ser adecuado usar una secuencia sin búfer, cambiando la configuración del búfer a través de setvbuf () y amigos. De esta manera no tendrá (leer: no debería) tener ningún problema de almacenamiento en búfer, pero podría no ser lo que desea.

Otros consejos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top