如何在C ++中捕获通过_popen启动的命令的所有输出?

时间:2015-07-30 12:12:40

标签: c++ windows popen

我有以下代码:

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.

如何取消此消息?

1 个答案:

答案 0 :(得分:0)

消息来自Windows(我想),所以当出现问题时,它是默认模式给用户。买你可以通过重定向到nul来摆脱这个。类似于你的命令&gt; nul 2&gt; NUL