Fprintf在没有使用stdout重定向的c程序中运行

时间:2014-07-01 18:44:02

标签: c printf pipe

我在Unix中创建了一个C程序,其中fprintf声明如下:

       #Include<stdio.h>
        ...
       fprintf(stdout,"Example\n");

问题是当我尝试将stdout重定向到另一个文件时:

      $./ExampleProgram > file.txt

预期的结果是在文件中有Example,但是输出就像这样(我输入命令promt第00和02行):

     00. BASH4.1$./ExampleProgram > file.txt 
     01. Example
     02. BASH4.1$cat file.txt
     03. BASH4.1$

如果我重定向stderr,输出就像这样:

     00.BASH4.1$./ExampleProgram &> file.txt
     01.BASH4.1$ cat file.txt
     02.BASH4.1$

根本没有输出

知道为什么会这样吗?

编辑:问题可能是fprintf的缓冲区,但我已尝试使用fflush(stdout)进行修复,但它无法正常工作

EDIT2:添加了更多详细信息。

1 个答案:

答案 0 :(得分:0)

我刚刚测试了您上面列出的示例。它运作得很好。 这是示例测试c文件的代码:


#include <stdio.h>

int main()
{
   fprintf(stdout,"Example\n");
   return 0;

}

编译:gcc example.c -o example

我使用bash环境来编译和运行。

也许你忘了包含stdio.h?