這是我的程序。爲什麼C程序的輸出順序在標準輸出重定向到文件時有所不同?
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello\n");
system("uname");
return 0;
}
這裏是輸出。
$ gcc foo.c
$ ./a.out
Hello
Linux
但是,如果我的節目的輸出重定向到一個文件中,我看到的輸出的順序是相反的,即Linux
被Hello
之前打印。
$ ./a.out > out.txt
$ cat out.txt
Linux
Hello
爲什麼在涉及重定向時輸出的順序不同?
錯誤。即使終端緩衝(我認爲不是),它只有一個「輸入接收器」:數據的重新排序不會發生在那裏。 – linuxfan