我有一個調用測試的C++代碼。我正在做一個系統調用來執行這個測試。當此測試失敗時,它將顯示如下所示「錯誤:無法發現以下組件類型的一個或多個設備:」如何在C++中讀取系統調用失敗時顯示的失敗日誌消息?
我有一個運行在Linux redhat上的C++代碼,它能夠檢測系統調用是否通過。但它無法捕獲錯誤消息(錯誤:無法發現以下組件類型的一個或多個設備:)並追加到日誌文件或打印它。
有人可以告訴我如何捕獲錯誤消息(錯誤:一個或多個以下組件類型的設備無法被發現:)? PS:我是實習生,任何幫助都會很好。
#include<iostream.h>
int main()
{
int i;
if (system(NULL))
puts ("Ok");
else
exit (1);
i=system("hpsp --discover -verbose --user Admin --oapasswd password");
printf ("The value returned was: %d.\n",i);
return false;
}
這隻會捕獲stdout的命令,而不是stderr。如果你想要stderr,你可以使用shell重定向,比如'2>&1',因爲popen使用shell來運行命令。 – 2012-02-15 03:17:48
我不僅需要捕獲stdout,還需要知道我的系統命令是否通過。我喜歡使用popen(),但我不知道如何弄清楚我的系統命令是否通過了。你能告訴我怎麼做嗎? – usustarr 2012-02-17 22:08:00
@usustarr - 要清楚,不需要運行system(),因爲您正在使用popen()來代替。我不知道您要搜索的「已通過」結果字符串的具體情況,但我在回答中編輯了代碼,以說明如何完成此操作。 – Duck 2012-02-18 17:20:45