[英]Capture my program's stderr output in Qt
我正在編寫一個使用libxslt庫的Qt GUI應用程序。 libxslt總是向stderr輸出錯誤,但在某些情況下,用戶可以看到顯示的那些消息。 有沒有辦法捕獲stderr輸出並將其放入QString?
有兩種快速選擇:
1)使用外部流程包裝您的使用並使用QProcess 。
這將引入一個外部包裝器。 這不允許您“有時”處理錯誤。 你需要一些外部處理。
QProcess process;
process.start("wrapper");
process.waitForFinished();
qDebug() << process.readAllStandardError();
2)根據着名的Linux編程接口書籍示例:重定向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(...);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.