在C ++中获取命令的stderror和stdout

时间:2019-05-11 15:02:25

标签: c++ command popen

我正在尝试在C ++中执行命令,并分别获取该命令的stdout和stderror。

我尝试使用popen(),但是由于它只捕获stdout,因此我不得不将stderr重定向到stdout。有没有办法在Linux上分别获得stdout和stderr?

到目前为止,我一直在使用:

std::string runCommand(const char * command) {
        std::array<char, 128> buffer;
        std::string ret;

        FILE* pipe = popen(std::string(command).append(" 2>&1").c_str(), "r");
        while (fgets(buffer.data(), 128, pipe) != NULL)
                ret += buffer.data();
        pclose(pipe);

        return ret;
}

我走对了吗?我应该继续使用popen还是用pipe / fork / exec方法来解决这种问题?

0 个答案:

没有答案