J'ai un programme qui écrit dans un fichier cgiOut * FILE * et juste après qu'il a écrit dans le flux, j'ai besoin de lancer et d'exécuter un processus d'arrière-plan. Le problème est qu'après la fourche, le flux FILE * semble parfois débusquer et je reçois une sortie dupliquée (après la fourche, tous les fichiers ouverts sont fermés, ce qui, je suppose, provoque le vidage des tampons). Comment puis-je éviter ça? Je ne veux pas fermer le fichier dans le processus maître car il est ouvert dans une bibliothèque et c'est une socket ou une pipe je pense.Comment effacer les tampons de sortie lorsque le programme forge?
1
A
Répondre
5
Pas tout à fait sûr que je comprends votre question, mais si vous voulez vous assurer que vos cgiOut
tampons 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 tamponné, en modifiant les paramètres de mise en mémoire tampon via setvbuf()
et les amis. De cette façon, vous ne serez pas (lire: ne devrait pas) avoir des problèmes de mise en mémoire tampon, mais ce n'est peut-être pas ce que vous voulez.
0