Domanda

Ho un programma che scrive in un FILE * cgiOut e subito dopo averlo scritto nello stream, devo eseguire il fork ed eseguire un processo in background. Il problema è che dopo il fork, il flusso FILE * sembra svuotare a volte e ottengo un output duplicato (dopo il fork, tutti i file aperti vengono chiusi, il che immagino causa lo svuotamento dei buffer). Come posso evitarlo? Non voglio chiudere il file nel processo principale poiché è aperto in una libreria ed è un socket o pipe credo.

È stato utile?

Soluzione

Non sono sicuro di aver capito la tua domanda, ma se vuoi assicurarti che i tuoi buffer cgiOut siano vuoti prima di fork () puoi usare fflush ( ) sullo stream appena prima di fork () . Ciò dovrebbe forzare lo svuotamento dei buffer.

Potrebbe essere opportuno utilizzare uno stream senza buffer, modificando le impostazioni di buffering tramite setvbuf () e amici. In questo modo non avrai (leggi: non dovresti) avere problemi di buffering, ma potrebbe non essere quello che vuoi.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top