errno、_doserrno、_sys_errlist、および _sys_nerr
これらのグローバル変数はエラー コードをエラー メッセージを出力するに perror と strerror の関数で使用される保持します。この表に示す機能を強化したバージョンはグローバル変数の代わりに使用する必要があります。
グローバル変数 |
機能的に同等の機能 |
---|---|
_doserrno |
|
_errno |
これらの変数はSTDLIB.H のように宣言します。
extern int _doserrno;
extern int errno;
extern char *_sys_errlist[ ];
extern int _sys_nerr;
解説
errno と _errno同じ変数に接続されます。errno はコード #define errno (*_errno()) として定義されます。
errno はシステム レベルの呼び出しのエラーで設定します。errno を設定すると最後の呼び出しの値を保持できるため呼び出しの成功に変更できます。これを設定する場合はを呼び出す直前の errno を常に確認してください。
エラーの場合errno はエラー コードがシステム コールが返すのと同じ値が設定されています。I/O 操作ではerrno コードのオペレーティング システムのエラー コードに相当する機能にアクセスするために _doserrno を使用します。ほとんどの非 I/O 操作用に _doserrno の値は未定義です。
errno の各値は perror を使用して出力されるかまたは文字列を strerror を使用して保存できるエラー メッセージに関連付けられます。perror と strerror は _sys_errlist のエラー情報を処理するために配列と _sys_nerr の _sys_errlist の要素数を使用します。
ライブラリのルーチンは _matherr を呼び出して errno を設定します。数値演算エラーを別に処理する場合は独自のルーチンを _matherr の参照の説明に従って書き込み _matherr という名前を付けます。
ERRNO.H の定義済み定数で定義されている errno のすべての値はUNIX の互換性次に示します。ERANGEEILSEQ と EDOM のみ ANSI 規格に指定されます。
定数 |
システム エラー メッセージ |
値 |
---|---|---|
EPERM |
許可されない操作 |
1 |
ENOENT |
このようなファイルまたはディレクトリがない |
2 |
ESRCH |
このようなプロセスはありません。 |
3 |
EINTR |
中断した関数 |
4 |
EIO |
I/O エラー |
5 |
ENXIO |
このようなデバイスまたはアドレスは |
6 |
E2BIG |
長い引数リストが長すぎる |
7 |
ENOEXEC |
実行ファイルのエラー |
8 |
EBADF |
bad file number |
9 |
ECHILD |
子プロセスが存在しない |
10 |
EAGAIN |
これ以上プロセスまたは十分なメモリまたは入れ子レベルに達する最大 |
11 |
ENOMEM |
十分なメモリ |
12 |
EACCES |
拒否されるアクセス許可 |
13 |
EFAULT |
不適切なアドレス |
14 |
EBUSY |
デバイスまたはリソースのビジー |
16 |
EEXIST |
ファイルです。 |
17 |
EXDEV |
デバイス間のリンク |
18 |
ENODEV |
このようなデバイスなし |
19 |
ENOTDIR |
存在しないディレクトリ |
20 |
EISDIR |
ディレクトリです。 |
21 |
EINVAL |
無効な引数 |
22 |
ENFILE |
システムで開いたファイルが多すぎます。 |
23 |
EMFILE |
開いているファイルが多すぎる。 |
24 |
ENOTTY |
不適切な入出力操作の制御 |
25 |
EFBIG |
非常に大きなファイル |
27 |
ENOSPC |
デバイスの空き領域がありません |
28 |
ESPIPE |
無効な Seek |
29 |
EROFS |
読み取り専用ファイル システム |
30 |
EMLINK |
リンクの数が多すぎます。 |
31 |
EPIPE |
壊れたパイプ |
32 |
EDOM |
数値演算の引数 |
33 |
ERANGE |
大きな結果が大きすぎる |
34 |
EDEADLK |
リソースの場合デッドロックが発生します |
36 |
EDEADLOCK |
古い Microsoft C のバージョンとの互換性維持のと同様に EDEADLK |
36 |
ENAMETOOLONG |
ファイル名が長すぎます |
38 |
ENOLCK |
使用可能なロックなし |
39 |
ENOSYS |
サポートされていない関数 |
40 |
ENOTEMPTY |
空のディレクトリ |
41 |
EILSEQ |
無効なバイト シーケンス |
42 |
STRUNCATE |
文字列は切り捨てられます。 |
80 |