libxslt ライブラリを使用する Qt GUI アプリケーションを作成しています。libxslt は常にエラーを stderr に出力しますが、場合によっては、それらのメッセージが表示されるのをユーザーが確認できると便利です。stderr 出力をキャプチャして QString に入れる方法はありますか?
1978 次
1 に答える
2
次の 2 つのクイック オプションがあります。
1)使用法を外部プロセスでラップし、 QProcessを使用します。
これにより、外部ラッパーが導入されます。これにより、エラーを「時々」オフハンドで処理することはできなくなります。そのためには、何らかの外部処理が必要になります。
QProcess process;
process.start("wrapper");
process.waitForFinished();
qDebug() << process.readAllStandardError();
2) 有名なLinux Programming Interfaceの本の例に従って: stderr (2) ファイル記述子をリダイレクトします。
これはもう少し複雑ですが、外部プロセス ラッパーを回避するのに適しています。また、posix にのみ準拠しているため、それがないと動作しない場合があります。msvc を使用する予定がある場合、これは問題になる可能性があります。Windows バックエンドを個別に作成するか、mingw を使用する必要があります。
int pfd[2];
pipe(pfd);
// Do other things here.
close(STDERR_FILENO);
if (pfd[1] != STDERR_FILENO) {
dup2(pfd[1], STDERR_FILENO);
close(pfd[1]);
}
read(...);
于 2014-05-20T21:23:01.773 に答える