errno 定数

構文

#include <errno.h>

解説

定数は errno 、さまざまなエラー条件に errno 割り当てられた値です。

ERRNO.H には、errno 値の定義が含まれています。 ただし、ERRNO.H に指定されているすべての定義が 32 ビット Windows オペレーティング システムで使用されるわけではありません。 ERRNO.H の値の一部は、UNIX 系のオペレーティング システムとの互換性を維持することを目的としています。 32 ビット Windows オペレーティング システムの errno 値は、UNIX システムの errno 値のサブセットです。

errno 値は、Windows オペレーティング システムのシステム コールが返す実際のエラー コードと必ずしも同じとは限りません。 実際のオペレーティング システムのエラー コードにアクセスするには、この値を含む _doserrno 変数を使用します。

サポートされている errno 値を次に示します。

定数 説明 Value
E2BIG 引数リストが長すぎます。 7
EACCES アクセス許可が拒否されました" のような出力で失敗します。 ファイルのアクセス許可設定では、指定したアクセスは許可されません。 ファイルの属性と互換性のない方法でファイル (または場合によってはディレクトリ) にアクセスしようとしました。

たとえば、開いていないファイルから読み取ろうとしたときにエラーが発生する可能性があります。 または、書き込み用に既存の読み取り専用ファイルを開こうとした場合、またはファイルではなくディレクトリを開こうとした場合。 MS-DOS オペレーティング システムのバージョン 3.0 以降では、EACCES がロック違反または共有違反を示す場合があります。

また、ファイルまたはディレクトリを既存のディレクトリと同じ名前に変更しようとした場合や、既存のディレクトリを削除しようとした場合にも、このエラーが発生します。
13
EAGAIN これ以上プロセスを生成できないか、メモリが不足しているか、最大の入れ子レベルに達しました。 プロセス スロットがなくなったり、メモリが不足したり、最大入れ子レベルに達したりしたため、新しいプロセスを作成できませんでした。 11
EBADF ファイル番号が正しくありません。 2 つの原因が考えられます。1) 指定されたファイル記述子が有効な値ではないか、開いているファイルを参照していません。 2) 読み取り専用モードで開いているファイル、またはデバイスに書き込もうとしたとき。 9
EBUSY デバイスまたはリソースがビジー状態です。 16
ECHILD 子プロセスが存在しません。 10
EDEADLK リソース デッドロックが発生します。 36
EDEADLOCK 以前のバージョンの Microsoft C との互換性のために EDEADLK と同じです。 36
EDOM 算術演算引数が使用されました。 数値演算関数の引数は、関数の doメイン 内にありません。 33
EEXIST ファイルが存在します。 既に存在するファイルを作成しようとしています。 たとえば、_O_CREAT および _O_EXCL フラグが _open の呼び出しで指定されますが、指定した名前のファイルが既に存在しています。 17
EFAULT アドレスが正しくありません。 14
EFBIG ファイルが大きすぎます。 27
EILSEQ 無効なバイト シーケンス (たとえば、MBCS 文字列) です。 42
EINTR 関数に割り込みがありました。 4
EINVAL 引数が無効です。 関数の引数のいずれかに無効な値が指定されています。 たとえば、(呼び出しによって) ファイル ポインターを配置するときに原点に fseek指定された値は、ファイルの先頭の前にあります。 22
EIO I/O エラーです。 5
EISDIR ディレクトリです。 21
EMFILE 開いているファイルが多すぎます。 使用できるファイル記述子が不足しているため、これ以上ファイルを開くことができません。 24
EMLINK リンクが多すぎます。 31
ENAMETOOLONG ファイル名が長すぎます。 38
ENFILE システムで開いているファイルが多すぎます。 23
ENODEV 該当するデバイスがありません。 19
ENOENT 該当するファイルまたはディレクトリがありません。 指定したファイルまたはディレクトリが存在しないか、見つかりません。 このメッセージは、指定したファイルが存在しないか、パスのコンポーネントで既存のディレクトリが指定されていない場合に発生することがあります。 2
ENOEXEC 実行形式エラーです。 実行可能でないファイル、または無効な実行可能ファイル形式のファイルを実行しようとしました。 8
ENOLCK ロックがありません。 39
ENOMEM メモリ不足のため、目的の操作を実行できません。 たとえば、このメッセージは、子プロセスの実行に十分なメモリがない場合や、呼び出しの _getcwd 割り当て要求が満たされない場合に発生する可能性があります。 12
ENOSPC デバイスに空き領域がありません。 デバイスの書き込み可能領域が不足しています (たとえば、ディスクが満杯の場合です)。 28
ENOSYS 関数はサポートされていません。 40
ENOTDIR ディレクトリではありません。 20
ENOTEMPTY ディレクトリは空ではありません。 41
ENOTTY 不適切な I/O 制御操作です。 25
ENXIO 該当するデバイスまたはアドレスがありません。 6
EPERM 操作は許可されていません。 1
EPIPE パイプが破壊されています。 32
ERANGE 結果が大きすぎます。 数値演算関数の引数が大きすぎて、結果の有効数字の一部またはすべてが失われます。 このエラーは、引数が予想よりも大きい場合に他の関数でも発生することがあります (たとえば、_getcwdbuffer 引数が予想より長い場合です)。 34
EROFS 読み取り専用ファイル システムが使用されています。 30
ESPIPE シークが無効です。 29
ESRCH 該当するプロセスがありません。 3
EXDEV デバイス間リンクがあります。 rename 関数を使用して、ファイルを別のデバイスに移動しようとしました。 18
STRUNCATE 結果として切り詰められる文字列のコピーまたは連結です。 以下を参照してください。_TRUNCATE 80

POSIX との互換性のために、次の値がサポートされています。

定数 説明 Value
EADDRINUSE 使用中のアドレスです。 100
EADDRNOTAVAIL アドレスは使用できません。 101
EAFNOSUPPORT アドレス ファミリがサポートされていません。 102
EALREADY 接続は既に実行中です。 103
EBADMSG 無効なメッセージです。 104
ECANCELED 操作が取り消されました。 105
ECONNABORTED 接続が中止されました。 106
ECONNREFUSED 接続が拒否されました。 107
ECONNRESET 接続がリセットされました。 108
EDESTADDRREQ 宛先アドレスが必要です。 109
EHOSTUNREACH ホストに到達できません。 110
EIDRM 識別子が削除されました。 111
EINPROGRESS 操作は実行中です。 112
EISCONN 既に接続されています。 113
ELOOP シンボリック リンクのレベルが多すぎます。 114
EMSGSIZE メッセージ サイズです。 115
ENETDOWN ネットワークがダウンしています。 116
ENETRESET ネットワークがリセットされました。 117
ENETUNREACH ネットワークに到達できません。 118
ENOBUFS バッファー領域がありません。 119
ENODATA 使用できるメッセージがありません。 120
ENOLINK リンクがありません。 121
ENOMSG メッセージがありません。 122
ENOPROTOOPT プロトコル オプションがありません。 123
ENOSR ストリーム リソースがありません。 124
ENOSTR ストリームではありません。 125
ENOTCONN 接続されていません。 126
ENOTRECOVERABLE 回復不可能な状態です。 127
ENOTSOCK ソケットではありません。 128
ENOTSUP サポートされていません。 129
EOPNOTSUPP 操作はサポートされていません。 130
EOTHER その他。 131
EOVERFLOW 値が大きすぎます。 132
EOWNERDEAD 所有者が停止しました。 133
EPROTO プロトコル エラーです。 134
EPROTONOSUPPORT プロトコルはサポートされていません。 135
EPROTOTYPE プロトコルの種類が正しくありません。 136
ETIME ストリームのタイムアウトです。 137
ETIMEDOUT タイムアウトしました。 138
ETXTBSY テキスト ファイルがビジー状態です。 139
EWOULDBLOCK 操作がブロックされます。 140

関連項目

グローバル定数