我正在尝试在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方法来解决这种问题?