#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;
}
wyjście z programu (w którym pierwsze read
i pierwszy write
jest podane przez użytkownika i echem przez terminal) jest:write() do wyjścia stdout i printf nie są przeplatane?
read
read
write
write
n: 5:n: 6:
Wyjście printf jest po naciśnięciu klawiszy Ctrl + D na standardowe wejście, a nie wraz z kolejnymi odczytami. Dlaczego to się dzieje?
Możesz także zmienić tryb buforowania za pomocą setvbuf() przed wykonaniem dowolnej operacji wejścia/wyjścia. – AProgrammer
Co oznacza "printf()' jest [buforowane] (http://en.wikipedia.org/wiki/Data_buffer) "? – ma11hew28
http://stackoverflow.com/a/17552608/242933 – ma11hew28