errno 常數

語法

#include <errno.h>

備註

errno 數是針對各種錯誤狀況指派給 errno 的值。

ERRNO.H 包含值的定義 errno 。 不過,並非所有 中指定的 ERRNO.H 定義都用於 32 位 Windows 作業系統。 中的 ERRNO.H 某些值會存在,以維持與 UNIX 系列作業系統的相容性。 errno32 位 Windows 作業系統中的值是 UNIX 系統中值的 errno 子集。

此值 errno 不一定與 Windows 作業系統的系統呼叫所傳回的實際錯誤碼相同。 若要存取實際的作業系統錯誤碼,請使用 _doserrno 包含此值的 變數。

支援下列 errno 值:

持續性 描述
E2BIG 引數清單太長。 7
EACCES 權限遭拒。 檔案的許可權設定不允許指定的存取。 嘗試以與檔案屬性不相容的方式存取檔案(或在某些情況下為目錄)。

例如,嘗試從未開啟的檔案讀取時,可能會發生錯誤。 或者,嘗試開啟現有的唯讀檔案以進行寫入,或開啟目錄,而不是檔案。 在 MS-DOS 作業系統 3.0 版和更新版本下, EACCES 也可能表示鎖定或共用違規。

在嘗試對檔案或目錄進行重新命名,或是移除現有目錄時,也可能會發生該錯誤。
13
EAGAIN 沒有更多進程或沒有足夠的記憶體或達到巢狀層級上限。 嘗試建立新的進程失敗,因為沒有更多進程位置,或記憶體不足,或已達到巢狀層級上限。 11
EBADF 檔案編號錯誤。 有兩個可能的原因:1) 指定的檔案描述元不是有效的值或未參考開啟的檔案。 2) 嘗試寫入以唯讀存取方式開啟的檔案或裝置。 9
EBUSY 裝置或資源忙碌中。 16
ECHILD 沒有繁衍的處理序。 10
EDEADLK 會發生資源死結。 36
EDEADLOCK EDEADLK 舊版 Microsoft C 相容相同。 36
EDOM 數學引數。 數學函式的引數不在函式的定義域中。 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 Exec 格式錯誤。 嘗試執行不是可執行檔或具有無效可執行檔案格式的檔案。 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 結果太大。 針對數學函式的引數太大,導致結果部分或完全失去的精確度。 當引數大於預期時,其他函式也會發生此錯誤(例如,當 的 buffer 引數 _getcwd 超過預期時)。 34
EROFS 唯讀檔案系統。 30
ESPIPE 搜尋無效。 29
ESRCH 沒有這類程式。 3
EXDEV 跨裝置連結。 嘗試將檔案移至不同的裝置(使用 函 rename 式)。 18
STRUNCATE 字串複製或串連導致截斷的字串。 請參閱 _TRUNCATE 80

為了與 POSIX 相容,支援下列值:

持續性 描述
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

另請參閱

全域常數