popen()
を使用して呼び出しのstderrをキャッチしようとしていますが、もちろんそれは行われていないようです。何か案は?
私のコードは多かれ少なかれ次のようになります:
popen("nedit", "r");
しかし、画面に非utf8に関するこのゴミがすべて表示されています...
popen
は、プロセスのstderrではなく、プロセスのstdoutのファイルハンドルを提供します。その最初の引数はシェルコマンドとして解釈されるため、リダイレクトを行うことができます。
FILE *p = popen("prog 2>&1", "r");
または、stdoutがまったく必要ない場合は、
FILE *p = popen("prog 2>&1 >/dev/null", "r");
(/dev/null
以外のファイルも使用できます。)
すべてのエラーメッセージを破棄する場合は、次を使用できます。
popen("nedit 2>/dev/null", "r");