Si j'ai bien compris fork() crée un processus fils en copiant l'image du processus parent.fork() et printf()
Ma question concerne la façon dont les processus parents et enfants partagent le flux stdout?
La fonction printf() d'un processus peut-elle être interrompue par d'autres ou non? Ce qui peut provoquer la sortie mixte.
Ou la sortie de la fonction printf() est-elle atomique?
Par exemple:
Le premier cas:
parent: printf("Hello");
child: printf("World\n");
Console has: HeWollorld
Le second cas:
parent: printf("Hello");
child: printf("World\n");
Console has: HelolWorld
Il n'écrit pas à un tuyau, il écrira (probablement) à un terminal. Donc, même les demandes d'écriture inférieures à PIPE_BUF ne sont pas garanties atomiques. –