fork() in C?

3 Antworten

int main() {
   printf("A");
   fflush(stdout);
   fork();
   return 0;
}

Mit fflush() sollte das problem gelöst sein.

Woher ich das weiß:Hobby – Jahre langes lernen

Butzel203 
Beitragsersteller
 20.07.2024, 22:40

Hat geklappt, dankeschön 👍

1

Ich versuche mal die eigentliche Frage zu beantworten:

fork() erzeugt (vereinfacht) einen exakten Klon des Prozessimages, so auch der Filedeskriptoren, den damit assoziierten Puffern (der C-Bibliothek) etc. pp. printf() ist nichts anderes als ein fprintf in den STDOUT, printf() schreibt also in den Ausgabestream. Wird dieser nun nach dem printf() geklont, ist er in beiden Prozessen mit 'A' gefüllt.

Daher führt das Flushen des Ausgabestreams zum gewünschten Ergebnis. Ebenso könnte man noch vor dem printf einfach das Buffering abschalten, was den gleichen Effekt haben dürfte.