将系统命令的输出管道传输到文件

时间:2018-08-27 17:39:00

标签: c operating-system pipe system

我正在执行一个任务,在该任务中,我需要运行系统命令并将输出写入文件。目前,我可以在运行时使用>> output.txt来管道输出,但是如何在我的程序中自动完成输出而无需用户键入管道部件。我尝试在system函数本身中串联它,同时还尝试创建一个temp变量以将其附加在每个循环的开始。我已经好几年没有使用C了,所以这个相对容易的任务很难找到。这是我的源代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char *argv[]) { /*argc holds the number of arguements and argv is an array of string pointers with indifinate size  */

    /*Check to see if no more than 4 arg entered */
    if(argc > 4 && argc > 0) {
        printf("Invalid number of arguements. No greater than 4");
        return 0;
    }
    FILE *fp;
    int i;
    char* temp[128];

    for(i = 1; i < argc; i++) {
        //strcopy(temp, argv[i]);
    //  printf("%s", temp);
        system(argv[i] >> output.txt);

    }
    return 0;
}

感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

在这种情况下,>>不是shell重定向,而是C右移运算符。

重定向必须是发送到system的命令的一部分。另外,temp必须是char的数组,而不是char *的数组:

char temp[128];
sprintf(temp, "%s >> output.txt", argv[1]);
system(temp);