C – comportement fork et printf

Test de la fonction fork en combinaison avec printf, j’ai trouvé un comportement étrange

Par exemple, le code:

int main(){ if(fork()==0){ printf("TestSsortingng"); } } 

n’imprime rien, alors que

 int main(){ if(fork()==0) { printf("TestSsortingng\n"); } } 

affiche TestSsortingng correctement. Pourquoi l’impression d’une nouvelle ligne modifie-t-elle le comportement? Je pense que cela pourrait faire quelque chose avec fflush (), mais je ne suis pas sûr. Pourrais-je obtenir une explication ou un lien où je peux lire? Merci pour la réponse à l’avance.

EDITED: L’explication que je cherche, c’est ce qui est réellement en train de rougir et pourquoi est identique à nn

Sous Linux (au moins), stdout est une ligne mise en mémoire tampon . Cela signifie que tout ce que vous y écrivez n’apparaîtra pas à l’écran jusqu’à ce qu’un '\n' soit rencontré. Si vous n’aimez pas ce comportement, vous pouvez modifier la politique de mise en mémoire tampon avec setbuf() , mais vous devrez le faire dès le démarrage de votre programme (enfin, avant toute écriture dans le stream), ou appelez fflush() moment. vous voulez vider le contenu du tampon, comme vous l’avez dit.

Rappelez-vous que les tampons sont également vidés quand un programme se termine et que ses stream ouverts sont automatiquement fermés.