1

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

例如,我想将 c++ 代码传递给 gcc 并将错误消息返回到我的原始代码

如何在 C++ 中编写它

4

1 回答 1

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在幕后工作)是创建一个新的匿名管道(with pipe),一个新进程(with fork),设置新进程的标准输出以使用该管道,然后exec在子进程。然后您可以从管道的读取端读取程序的输出。这更灵活,也是推荐的方式(即使设置起来更复杂)。如果您希望能够进行双向通信,这也是唯一的方法,即写入外部程序的标准输入从其输出中读取。

于 2013-09-30T06:38:12.577 回答