Kann jemand bitte erklären, wie dieser Code funktioniert?
%Vor%Drucke:
%Vor% Meine genaue Frage ist, warum hello
zweimal gedruckt wird. Wird nicht hello
zuerst gedruckt, dann wird fork()
ausgeführt?
Manchmal druckt es auch:
%Vor%Warum diese Ausgabe?
Der Grund ist: gepufferte Ausgabe. "Hallo" ist im Puffer, aber noch nicht gelöscht, wenn Sie die Gabelung machen, also beginnt der gegabelte Prozess mit demselben Puffer, der das gleiche Wort "Hallo" enthält. Dann geben sowohl das Eltern- als auch das Kindwort "Welt" aus, so dass die Gesamtausgabe für beide "HelloWorld" ist.
Hinzufügen zu @ammoQ Antwort:
%Vor%bringt Sie zum erwarteten Ergebnis.
Fork erstellt eine Kopie des Prozesses. Und printf () kann gepuffert werden, wenn die Verzweigung auftritt, dieser Puffer würde kopiert werden.
Ziemlich solide Erklärung hier: fork () verzweigt sich mehr als erwartet?