Hier ist meine C-Programm:Verständnis stdout ausgegeben, wenn mit Gabel() verwendet
int main() {
fork();
printf("one ");
fork();
printf("two ");
}
Die Ausgabe lautet:
one two one two one two one two
jedoch Wenn ich den Code ändern und einen \n
zum Druck hinzufügen Erklärung:
int main() {
fork();
printf("one\n");
fork();
printf("two\n");
}
Die Ausgabe lautet:
one
one
two
two
two
two
Oder manchmal (die Reihenfolge kann sich ändern):
one
two
one
two
two
two
Warum ist die Ausgangs 8
Worte in dem ersten Programm und 6
in der zweiten?
Stdout ist Linie gepuffert. Aber das macht nichts, da die Ausführungsreihenfolge der Prozesse sowieso willkürlich ist, also könnte es in beliebiger Reihenfolge passieren. –
Das sieht sehr nach einem Hausaufgabenproblem aus. Welche Erklärung hast du in Betracht gezogen? – Peter
Dies ist kein Hausaufgaben-Problem :) Ich möchte Puffer überschreiben, wenn es hier passiert. –