Oto mój program.Dlaczego kolejność wyjścia programu C różni się, gdy jego standardowe wyjście jest przekierowywane do pliku?
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello\n");
system("uname");
return 0;
}
Oto dane wyjściowe.
$ gcc foo.c
$ ./a.out
Hello
Linux
Jednak gdybym przekierować wyjście programu do pliku, widzę, że kolejność wyjścia jest odwrócony, tzn Linux
jest drukowany przed Hello
.
$ ./a.out > out.txt
$ cat out.txt
Linux
Hello
Dlaczego kolejność danych wyjściowych różni się w przypadku przekierowania?
Nieprawidłowy. Nawet jeśli terminal robi buforowanie (chyba nie), ma tylko jedno "ujście wejściowe": nie może się tam zmienić kolejności danych. – linuxfan