如何将输出重定向到C中的文件?

时间:2014-02-11 20:51:18

标签: c pipe

我创建了一个文件但是如何将输出重定向到文件而不是终端?我尝试使用>操作员,但不断出错。任何帮助表示赞赏。

    #include <stdio.h>

    int main(int argc, char *argv[])
   {
        FILE *fp;       //File handler

        char cmd[] = "sort -n"; //sort -n sorts stdin in numerical order
        char pmode[] = "w"; //write mode - we are to write to a pipe

        fp = popen(cmd,pmode);  //Open the pipe (run command cmd as a child process)

        fprintf(fp, "3\n"); //WRITE data to pipe
        fprintf(fp, "1\n");
        fprintf(fp, "5\n");
         fprintf(fp, "4\n");
        fprintf(fp, "2\n");

         pclose(fp);        

           return 0;
                 }

2 个答案:

答案 0 :(得分:1)

如果C应用程序已经通过设计打印到屏幕上,或者因为应用程序的作者最初没有设想写入文件,那么重定向很有用。

如果您真的对重定向感兴趣,那么不要担心代码中的FILE指针,只需打印到stdout即可。然后,当您运行应用程序时,可以使用|重定向任意多个和&gt;运算符。

另一方面,如果您真的对您的应用程序能够写入文件感兴趣,那么您的应用程序需要做额外的工作来获取文件路径/名称,打开文件,写入该文件句柄 - 不是stdout - 最后关闭文件。此外,您还需要更加小心地注意错误并妥善处理它们。

如果你走这条路,你可以简单地运行你的应用程序而不用担心重定向,因为你的应用程序处理文件I / O.

答案 1 :(得分:0)

&gt;运算符不会影响程序的执行。 shell使用它将程序输出到stdout的内容重定向到文件。

shell是运行程序的,它不是它的一部分。