5
下面是一個簡單的C
程序:當stdout被重定向到該文件時,爲什麼printf()不會輸出到文件?
#include <unistd.h>
#include <stdio.h>
int main(void)
{
while (1)
{
printf("Hello World\n");
sleep(1);
}
}
構建並運行它時,「Hello World
」,將在終端中的印刷:
$ ./a.out
Hello World
Hello World
Hello World
但如果stdout
被重定向到一個文件,運行一段時間後,文件中仍然沒有任何內容:
$ ./a.out > log.txt
^C
$ cat log.txt
$
爲什麼printf
輸出到stdout
被重定向到的文件?
它當然可以,但你並沒有沖洗它。 –
在許多平臺上進行線路緩衝(因此沖洗每條線路)或直接無緩衝的內容都會自動轉到TTY,但不會轉到文件。 –
「Ctrl + C」也不沖洗? –