Получите stderror и stdout команды в c ++ - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь выполнить команду в 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 будет лучше для такого рода проблем?

...