私はテストを呼び出すC++コードを持っています。私はこのテストを実行するためにシステムコールを行っています。このテストに失敗すると、次のようなエラーが表示されます。「エラー:次のコンポーネントタイプのデバイスが1つ以上見つかりませんでした。」C++でシステムコールが失敗したときに表示される失敗ログメッセージを読み取る方法は?
Linuxのredhatで実行されるC++コードがあります。システムコールが失敗したかどうかを検出します。しかし、エラーメッセージ(エラー:以下のコンポーネントタイプの1つまたは複数のデバイスが検出されなかった可能性があります:)をキャプチャできず、ログファイルに追加または印刷できません。以下のコンポーネントタイプ(S)の一つまたは複数のデバイス:)発見することができませんでした。
誰かが(ERRORは、エラーメッセージをキャプチャする方法を教えていただけますか? 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;
}
これはstderrではなくコマンドのstdoutをキャプチャします。 stderrが必要な場合は、 '2>&1'のようなシェルリダイレクトを使うことができます.popenはシェルを使ってコマンドを実行します。 –
私はstdoutをキャプチャするだけでなく、自分のシステムコマンドが合格したか失敗したかも知る必要があります。 popen()を使うのが好きですが、私のシステムコマンドが合格したか失敗したかを判断する方法がわかりません。あなたは私にそのことを教えてもらえますか? – usustarr
@usustarr - あなたがpopen()を代わりに使用しているので、system()を実行する必要はありません。私はあなたが探している "合格"結果の文字列の詳細を知らないが、私はそれがどのように行われるかを説明するために答えのコードを編集した。 – Duck