在结束运行之前,是否有命令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堆叠并在命令运行结束后运行。
附:我试图执行的命令是aria2c