如何将控制台输出写入c中的文件

时间:2015-12-29 09:39:45

标签: c

您好我有以下代码

int main()
{
   system("netsh interface ip show addresses");

}

并将控制台中的输出写入文本文件或写入变量。请求帮我解决这个问题。感谢提前

3 个答案:

答案 0 :(得分:2)

如果你使用Linux,试试这个:

system("netsh interface ip show addresses > /path/to/file 2>&1 ");

答案 1 :(得分:1)

void do_popen()
    FILE *pf;
    char command[200];

    // Execute a process listing
    sprintf(command, "netsh interface ip show addresses"); 

    // Setup our pipe for reading and execute our command.
    if(!(pf= popen(command, "r"))){
      exit(EXIT_FAILURE);
    }

    if (pclose(pf) != 0)
        fprintf(stderr," Error: Failed to close command stream \n");

    return;
}

这里我们使用 popen ,它在内部创建一个进程并运行给它的命令。它返回一个I / O流,稍后可以从中获取数据。从给定的命令缓冲区读取或写回文件时正在使用readwrite系统调用

为了使其更通用,您可以在function参数中传递命令,并将存储在文件中的数据以动态数组的形式返回。

尽管使用popen很好地完成了它,但是它创建了一个单独的进程,它以sh命令运行这些命令,然后将它放在文件中,在返回文件指针之前,它会关闭所有这个过程。

我宁愿使用fork()实现我自己的子进程,然后使用exec并实现我自己的SIGCHILD处理程序将其从僵尸中删除并继续并行处理其他工作而不是阻止这个过程

答案 2 :(得分:-1)

希望以下代码有助于解决您的问题。查看man pages for the details of popen and pclose APIs

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE *in;
    char buff[512];
    if(!(in = popen("netsh interface ip show addresses", "r"))){
        return -1;
    }
    while(fgets(buff, sizeof(buff), in)!=NULL){
        printf("%s", buff);
    }
    pclose(in);
    return 0;
}