/ / C ++ прочете изходен изход на изход в низ [дубликат] - c ++

C ++ чете изхода на popen грешка в низа [duplicate] - c ++

Аз отварям процес през posix popen() функция. Например git push, mkdir x и т.н.

Мога да прочета изхода от тези команди лесно, като го запазя в буфер като този:

#include <iostream>
#include <stdio.h>

using namespace std;

int main() {

FILE *in;
char buff[512];

if(!(in = popen("mkdir x", "r"))){
return 1;
}

// fgets stores the output into buff
while(fgets(buff, sizeof(buff), in)!=NULL){
cout << buff;
}
pclose(in);

return 0;

}

Но тогава, ако има грешка в процеса, напр. mkdir не успее, тогава искам да прочета грешката в низ или буфер на букви.

Въпреки това, с кода по-горе, ако тя не успее, грешката не се съхранява в буфера. Мисля, че това е така, защото грешката е пренасочена към стандартна грешка вместо стандартния вход.

Как мога да променя горния код, за да се върне съобщението за грешка от bash / процеса?

Отговори:

2 за отговор № 1

Можете да посочите пренасочване в popen извикване на метод:

popen("mkdir x 2>&1", "r")

След това бихте могли да прочетете съобщението за грешка от буфера.