もっと詳しく
C言語では、エラー管理を直接許可していませんが、戻り値を介したより低いレベルでのアクセスを可能にします。 不正確な場合、CまたはおそらくLinux関数呼び出しの大部分は-1またはVoidを生成し、errnoエラーコードを設定します。 これは、関数呼び出しが失敗したことを示すユニバーサル定数です。 ヘッダーファイルには、さまざまなエラーコードのリストがあります。 その結果、C開発者は提供された値を調べ、それらに基づいて必要な措置を講じることができます。 結果が0の場合、プログラムに問題はないようです。本日のこの記事では、Linux環境(Ubuntu 20.0.4システムなど)でエラーコードとメッセージを取得するための「errno」変数の使用について説明します。 。)Ubuntu 20.04 Linuxオペレーティングシステムでターミナルシェルを開き、CのGCCコンパイラをインストールすることから始めましょう。

Cコードの作成に移る前に、LinuxシステムにCファイルが必要です。 したがって、タッチ命令を使用して作成してきました。 このファイルの最後には「c」拡張子が含まれている必要があります。 ご覧のとおり、「errno.c」という名前のファイルを作成しました。 listコマンドは、Linuxの現在の作業ディレクトリのすべてのファイルとフォルダを一覧表示するために使用されています。 新しく作成されたCファイル「errno.c」もここにリストされています。 ファイルにCコードを作成するには、テキストエディター、Vimエディター、GnuNanoエディターなどのエディターで開く必要があります。 そのため、シェルの「nano」コマンドを使用して、GNUNanoエディター内で開いています。 このファイルは、ターミナルのようなエディタで開かれます。

例01

この記事の最初の例から始めましょう。 たとえば、Cコードでのファイリングを使用して、同じ現在のディレクトリにある特定のテキストファイルからデータを開いて読み取りたいとします。 このために、コードでCの標準入出力ライブラリを使用する必要があります。 そのため、「#include」キーワードを使用してオープニングラインに含めました。

その後、このCコードで「errno.h」ヘッダーを使用して、組み込み変数「errno」を使用してエラーコードとメッセージを取得できるようにする必要があります。 メインの実行は、Cプログラムの「main()」関数から開始されます。 このメインプログラム内では、「FILE」変数を使用して、ポインタ型のファイル記述子「f」を初期化しています。 このファイル記述子は、Cでのファイリングの「fopen」機能を使用して読み取り専用形式でファイル「new.txt」を開くために使用されています。if-elseステートメントは、ファイルが正常に開かれたかどうかを確認するためにここにあります。 ステートメントの「if」部分は、ファイル記述子の返された結果が0に等しいかどうかをチェックします。 0の場合、ファイルが見つからないか、正常に開かれていないことを意味します。 したがって、printfステートメントは「errno」変数を使用してエラーコードを表示します。

一方、「else」の部分は、条件が以外のファイル記述子値を満たさない場合に使用されます。 printfステートメントは、オープニングが成功したことを示します。

このコードを「gcc」コンパイラでコンパイルし、「。/a.out」命令で実行しました。 このコードを実行すると、ファイルが見つからなかった場合にエラーコード番号2が返されます。

このエラーを削除するには、「touch」命令を使用して新しいテキストファイルを作成し、図のように「echo」ステートメントを使用してデータを追加する必要があります。 「cat」命令は、ファイルに新しく追加されたテキストデータが含まれていることを示しています。

これで、シェルで同じコードをコンパイルして実行すると、「else」の部分が実行され、「Successful」というメッセージが表示されます(つまり、ファイルが見つかりました)。

エラーメッセージとそのエラーコードを表示したい場合は、プログラムの「strerror」関数を使用する必要があります。 そのためには、コードでも「string.h」ヘッダーを使用する必要があります。 そこで、ヘッダーを追加し、「if-else」ステートメントの「if」コンポーネントを更新しました。 strerror()関数呼び出しは、エラーコードによってエラーメッセージを取得するために「errno」を訴えてきました。

ファイルが見つからない場合、図のようにシェルに「そのようなファイルまたはディレクトリはありません」というエラーメッセージが表示されます。

例02

別のエラー例については、エラー番号を確認してみましょう。 プログラムでは標準ライブラリを使用しており、main()関数には、変数「val」の初期化と、「val」変数を渡すことによる「check」関数への関数呼び出しが含まれています。 check()関数は、「if-else」ステートメントを使用して、値「val」がゼロであるかどうかをチェックします。したがって、他の値はそれで割り切れる可能性があります。 値「val」は7なので、8で割り切れる可能性があります。したがって、check()関数の「else」部分を実行して除算結果を計算し、シェルに表示します。

コンパイルと実行の後、分割が可能であることがわかりました。 else部分は、変数「val」の89と値「7」の間の除算値を計算して表示しました。

コードを再度更新し、main()関数の変数「val」に値として0を追加して、結果を逆にします。 そのため、下の画像に示すように、「val」値を0に更新しました。 残りのコードは変更されていません。

この更新されたコードを実行すると、エラーコード0とそのエラーメッセージが表示されます。

結論

これは、記事の「errno」変数を使用して、「errno.h」ヘッダーを使用してさまざまな例外のエラーコードを取得することについてです。 また、「strerror」関数を使用して、コード番号とともにエラーメッセージを表示する方法についても説明しました。 このガイドには、errnoの概念をよりよく説明するために2つのインスタンスが組み込まれています。

The post C言語のErrno appeared first on Gamingsym Japan.