0
私はposix popen()
関数を介してプロセスをオープンしています。例えば。 gitのプッシュ、MKDIR X、等文字列にC++読み込みpopenエラー出力
私はこのようなバッファにそれを記憶することによって、容易にこれらのコマンドの出力を読むことができます:
#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 /プロセスから返されたエラーメッセージを取得するにはどうすればよいですか?
通常の出力(エラーがない場合)をバッファに取り込みますか? –
@DramaticStackoverflowPirateはい。 '2>&1'はstderr(2)をstdout(1)に書き込むことを意味しますが、stdoutを落とさず、効果的に2つを結合します。 –