【问题标题】:getting the output of external program to c++ code [duplicate]将外部程序的输出获取到 C++ 代码 [重复]
【发布时间】:2013-09-30 06:33:37
【问题描述】:

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

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

如何用 C++ 编写

【问题讨论】:

    标签: c++ linux


    【解决方案1】:

    有两种方法。如果您只想读取外部程序的输出,简单的方法是使用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子进程中的程序。然后您可以从管道的读取端读取程序的输出。这更灵活,也是推荐的方式(即使设置起来更复杂)。如果您希望能够进行双向通信,这也是唯一的方法,即写入外部程序标准输入从其输出中读取。

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2016-11-14
      • 2016-01-31
      • 2017-10-07
      • 2018-08-23
      • 2023-04-10
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多