gpt4 book ai didi

c - 当 stdout 被重定向到该文件时,为什么 printf() 不输出到该文件?

转载 作者:太空狗 更新时间:2023-10-29 15:08:46 25 4
gpt4 key购买 nike

下面是一个简单的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 重定向到的文件?

最佳答案

仅对于终端,默认情况下它是行缓冲区。在这里,您将标准输出重定向到文件。所以,现在标准输出不指向终端。它指向一个文件。对于文件,默认情况下它是完全缓冲的。因此,您在写入后刷新了标准输出。

请参阅此 question 的答案.

正如@js1 所说,您必须在编写后调用 fflush(stdout)。

关于c - 当 stdout 被重定向到该文件时,为什么 printf() 不输出到该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com