Sprache: C, Betriebssystem: Linuxprintf newline hat Zeilenpuffer?
Code:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
fork();
printf("hello world\n");
fork();
printf("bye\n");
return 0;
}
Ausgang:
hello world
bye
hello world
bye
hello world
bye
hello world
bye
Nach this und this, printf() buffers output until a newline is encountered
.
Also warum haben wir 4 "Hallo Welt" in diesem Fall? (Statt 2 „Hallo Welt“)
bearbeiten: Leider alle, aber wie @GregHewgill sagte ich dieses Programm aus einer Umgebung ausgeführt wird, wo der Ausgang nicht direkt an das Terminal sein kann, wenn ich es noch einmal überprüfen auf meinem Computer, es läuft nur wie erwartet.
Die Ausgabe kann nicht reproduziert werden (gcc 4.8.1). – DyZ
Zeilenpufferung ist nur eine * mögliche * Strategie, die 'printf' implementieren kann. Der einzige sichere Weg, um einen Ausgabestrom zu spülen, ist 'fflush'. – StoryTeller
Ich bekomme unterschiedliche Ausgabe mit i686-pc-cygwin/3.4.4 in cygwin – cleblanc