Есть ли способ получить выходные данные команды stdout и stderr до того, как она закончится?Я пытался popen
и вот код:
string exec(const char* cmd) {
char buffer[128];
string result;
string modCmd = (string)cmd + (string)" 2>&1";
FILE* pipe = popen(modCmd.c_str(), "r");
if (!pipe) throw runtime_error("popen() failed!");
try {
while (!feof(pipe)) {
if (fgets(buffer, 128, pipe) != nullptr)
{
result += buffer;
cout << buffer;
}
}
} catch (...) {
pclose(pipe);
throw;
}
pclose(pipe);
return result;
}
, но проблема в том, что все cout
s складываются и запускаются после завершения выполнения команды.
PS КомандаЯ пытаюсь выполнить это aria2c