我创建了一个文件但是如何将输出重定向到文件而不是终端?我尝试使用>操作员,但不断出错。任何帮助表示赞赏。
#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;
}
答案 0 :(得分:1)
如果C应用程序已经通过设计打印到屏幕上,或者因为应用程序的作者最初没有设想写入文件,那么重定向很有用。
如果您真的对重定向感兴趣,那么不要担心代码中的FILE指针,只需打印到stdout即可。然后,当您运行应用程序时,可以使用|重定向任意多个和&gt;运算符。
另一方面,如果您真的对您的应用程序能够写入文件感兴趣,那么您的应用程序需要做额外的工作来获取文件路径/名称,打开文件,写入该文件句柄 - 不是stdout - 最后关闭文件。此外,您还需要更加小心地注意错误并妥善处理它们。
如果你走这条路,你可以简单地运行你的应用程序而不用担心重定向,因为你的应用程序处理文件I / O.
答案 1 :(得分:0)
&gt;运算符不会影响程序的执行。 shell使用它将程序输出到stdout的内容重定向到文件。
shell是运行程序的,它不是它的一部分。