
Envoyé par
dvp_zero
Si je commence toute la boucle while, alors tout se passe bien.
Maintenant si je laisse le code tel quel, le fichier test.dat s'ouvre mais rien ne s'affiche dedans.
Ce n'est pas normal ça si? il devrait quand même m'écrire "Cette ligne doit se trouver dans le fichier" comme la boucle arrive apres?
Je dirais que c'est tout à fait normale en voyant ceci :
1 2 3 4 5
| //Ecoute de la socket
while(1)
{
...
} |
Comment est-ce que tu arrêtes cette boucle ? très certainement en tuant le processus avec un bon vieux Ctrl+C 
Cela implique que ton programme se termine brutalement, sachant que les I/O sont bufferisées ton programme n'a pas le temps de vider ses tampons, en l'absence de cette boucle infinis tu n'as pas besoin de le tuer et tout vas pour le mieux. pour forcer le système a vider ses tampons place un fflush(stdout) juste après chaque fprintf()/printf()/...
Certains diront que le \n est là pour ça, en effet mais qui nous dit que stdout dans ce cas précis est line buffered, bref tu peux aussi rajouter un appel à setvbuf() au tout début de ton programme avant toute opération d'I/O :
setvbuf(stdout, NULL, _IOLBF, 0);
Partager