[英]Why printf() does not output to a file, when stdout is redirected to that file?
以下是一個簡單的C
程序:
#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
重定向到的文件?
僅對於終端,默認情況下是行緩沖區。 在這里,您將標准輸出重定向到文件。 因此,現在標准輸出未指向終端。 它指向一個文件。 對於文件,默認情況下已完全緩沖。 因此,您已經在寫入后刷新了標准輸出。
請參考該問題的答案。
正如@ js1所說,您必須在編寫后調用fflush(stdout)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.