Я пытаюсь выполнить команду в C ++ и получить stdout и stderror этой команды отдельно.
Я пробовал использовать popen (), однако, поскольку он захватывает только стандартный вывод, мне пришлось перенаправить стандартный вывод на стандартный вывод. Есть ли способ получить stdout и stderr отдельно в Linux?
До сих пор я использовал:
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 будет лучше для такого рода проблем?