c - 为什么在使用 fprintf 时不会打印到标准输出?

标签 c stdout stderr printf

我有这个代码:

#include <stdio.h>
#include <unistd.h>
int main()
{
        while(1)
        {
                fprintf(stdout,"hello-out");
                fprintf(stderr,"hello-err");
                sleep(1);
        }
        return 0;
}

输出是hello-err hello-err hello-err hello-err hello -err 你好-err 以 1 秒的间隔。 我想知道为什么 hello-out 永远不会被打印出来。

最佳答案

您需要 fflush stdout 因为通常 stdout 是行缓冲的,您不会在程序中发出换行符。

            fprintf(stdout,"hello-out");
            fflush(stdout);

stderr 默认情况下未完全缓冲,因此您不需要fflush

关于c - 为什么在使用 fprintf 时不会打印到标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314825/

相关文章:

java - 使用 Apache Commons Exec 时如何分别收集标准输出和标准错误?

python - 调用 python webbrowser 时抑制/重定向 stderr

c - 为什么可以在嵌套循环中声明一个 STRUCT?

c++ - memcpy 中的指针运算有奇怪的结果

c - 如何在C编程中的另一个函数中调用一个函数

java - bash 脚本 : search Java STDOUT for a variable

c - 打印到标准输出

c - 带函数的 while 语句

linux - 如何将标准输出写入带有颜色的文件?

shell - 进程完成后读取 stderr