【问题标题】:How do I capture all output of a command launched through _popen, in C++?如何在 C++ 中捕获通过 _popen 启动的命令的所有输出?
【发布时间】:2015-07-30 12:12:40
【问题描述】:

我有以下代码:

FILE* pipe = _popen(command_.c_str(), "r");
if (!pipe)
{
    throw std::runtime_error{
        "Subprocess::Run: error starting [" + command_ + "]"
    };
}

std::array<char, 512> buffer;
while (!feof(pipe))
    if (fgets(buffer.data(), buffer.size(), pipe) != NULL)
        output_.append(buffer.data());

exit_code_ = _pclose(pipe);

这用于获取执行命令的标准输出和退出代码;

当我使用无效命令(例如"dfakjhfasidufha")运行此代码时,我的控制台中会出现一条错误消息:

'dfakjhfasidufha' is not recognized as an internal or external command, 
operable program or batch file.

如何隐藏此消息?

【问题讨论】:

    标签: c++ windows popen


    【解决方案1】:

    消息来自 Windows(我想),因此当出现问题时,默认模式是向用户让步。购买您可以通过重定向到 nul 来摆脱这种情况。类似于 yourcommand > nul 2> nul

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2010-12-19
      • 1970-01-01
      • 2021-05-29
      • 2013-12-01
      相关资源
      最近更新 更多