会社の監視プログラムの 1 つにいくつかのエラー アラートをコーディングしようとしていますが、C の system() コマンドからの戻り値を使用してコードを作成することはあまりうまくいきません。コードは scp トランザクションを呼び出してファイルを取り出します。別のサーバー.....システムがダウンしている場合、または接続が失敗した場合にエラーをフラグする必要があります。
「echo $?」でエラーの戻り値を調べてみました。0 は成功したリターンのように見えますが、1 はそれ以外のものですが、それをアプリケーションにコーディングしても、失敗した試行は検出されません。コマンドラインから戻り値を取得しようとしましたが、その値が実際にアプリケーションの実行中に返されたものであるかどうかはわかりません。
一番下の行は、system() コマンドが失敗を返すときにキャッチすることなので、より良い解決策があるかどうかはわかりません。
皆さんありがとう。
編集:エラーを特定するために使用しているコードの抜粋を次に示します。
if ( system(cmd) != 0 );
{
sftpCrash = TRUE;
printf("FTP crash detected.")
return;
}
次に、 int sftpCrash が呼び出し元の関数に返され、次のように実行されます。
if ( sftpCrash == TRUE)
{
Node->color = RED; //Posts an error to our monitoring application
sprintf(reason, "Failure on SFTP connection to %s. Please check server status.",
getenv("HOSTNAME"));
printf(("SFTP crashed. Should post error alert."));
}
これはすべて UNIX サーバー上で実行および実行されています。