schreiben Sie (), um stdout und printf die Ausgabe nicht-interleaved?

#include <stdio.h>
#define MAXLEN 256

int main() {
  int n;
  char buf[MAXLEN];
  while((n = read(0,buf,sizeof(buf))) != 0){
    printf("n: %d:",n);
    write(1,buf,n);
  }
  return 1;
}

Die Ausgabe des Programms (wo die erste read und erste write wird vom Benutzer eingegeben und hallte durch das terminal) ist:

read
read
write
write
n: 5:n: 6:

Die Ausgabe von printf () kommt nach dem drücken von Strg+D auf der standard-Eingabe und nicht zusammen mit der anschließenden liest. Warum geschieht dieses?

InformationsquelleAutor s_itbhu | 2009-08-07

Schreibe einen Kommentar