将外部程序的输出转换为c ++代码

时间:2013-09-30 06:33:37

标签: c++ linux

我正在努力编写一个c ++代码,将一些“字符串”传递给外部程序并获得反馈。

例如,我想将c ++代码传递给gcc并将错误消息恢复为原始代码

如何在c ++中编写

1 个答案:

答案 0 :(得分:5)

有两种方法可以做到这一点。如果您只想阅读外部程序的输出,那么简单的方法就是使用popen

FILE* fp = popen("/some/command argument1 argument2", "r");

char input[256];
while (fgets(input, sizeof(input), fp))
{
    std::cout << "Got input from command: " << input;
}

另一种更复杂的方式(以及popen如何在幕后工作)是创建一个新的匿名管道(带pipe),一个新进程(带fork),集向上使用管道的新进程的标准输出,然后在子进程中exec程序。然后,您可以从管道的读取端读取程序的输出。这更灵活,也是推荐的方式(即使设置起来比较复杂)。如果您希望能够进行双向通信,也就是写入外部程序标准输入从其输出中读取,这也是唯一的方法。