QProcess を使用して宛先 / ローカル IP に ping を実行中に問題が発生しました。ping が成功した場合、QProcess は「0」を返しますが、ping が「ネットワークに到達できません」というエラーが発生した場合も (ターミナルで手動で表示されます)。
実際には、アプリケーションでネットワーク接続を確認する必要があります。それを実装するために、QProcess を使用した ping の非常に単純な概念を使用しました。ネットワークエラーが発生した場合はメッセージボックスをポップアップする必要があります。それ以外の場合、アプリケーションはポップアップメッセージなしで正常に起動します。
ping のコードは次のとおりです。
bool App::pingPcuStatus(void)
{
const QString IP ="192.168.49.44";
bool ret = false;
int status;
if ( IP == "0.0.0.0") {
status = 1;
}
else {
QProcess pingProcess;
QString exec = "ping";
QStringList params;
params << "-c" << "1" << IP;
status = pingProcess.execute(exec, params); //status = 0 , if Ping Successfull
pingProcess.close();
}
ret = (status) ? false : true;
return ret;
}
しかし、私が見つけたデバッグ中に、ネットワークに接続していなくても「true」を返します。(端末で同じコマンドを使用して手動でpingを実行しようとしましたが、「ネットワークに到達できません」というエラーが表示されます)。
これは私の場合、大きなバグにつながります。
QProcessまたはその他の解決方法を使用してこのエラーをキャプチャする最良の方法は何ですか???
どんなアイデアや提案も大歓迎です。