Question

J'ai un programme qui écrit dans un fichier FILE * cgiOut et juste après qu'il a écrit dans le flux, je dois créer un processus d'arrière-plan et l'exécuter en arrière-plan. Le problème, c'est qu'après le fork, le flux FILE * semble parfois se vider et que la sortie est dupliquée (après le fork, tous les fichiers ouverts sont fermés, ce qui entraîne le vidage des mémoires tampons). Comment puis-je éviter ça? Je ne veux pas fermer le fichier dans le processus principal car il est ouvert dans une bibliothèque et c’est un socket ou un tuyau, je pense.

Était-ce utile?

La solution

Je ne comprends pas bien si je comprends votre question, mais si vous voulez vous assurer que vos tampons cgiOut sont vides avant fork () , vous pouvez utiliser fflush ( ) sur le flux juste avant fork () . Cela devrait forcer les tampons à être vidés.

Il peut être approprié d’utiliser un flux non mis en tampon, en modifiant les paramètres de mise en mémoire tampon via setvbuf () et ses amis. De cette façon, vous ne (lire: ne devriez pas) avoir de problèmes de mise en mémoire tampon, mais ce n'est peut-être pas ce que vous voulez.

Autres conseils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top