簡體   English   中英

在Qt中捕獲我程序的stderr輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM