errno
常量
语法
#include <errno.h>
备注
对于各种错误条件,errno
常量是分配给 errno
的值。
ERRNO.H
包含 errno
值的定义。 但是,并非 ERRNO.H
中给定的提供定义都可用于 32 位 Windows 操作系统。 ERRNO.H
中的某些值的存在是为了保持与 UNIX 系列操作系统的兼容性。 32 位 Windows 操作系统中的 errno
值是 XENIX 系统中的 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 |
存在文件。 尝试创建已存在的文件。 例如,在 _open 调用中指定 _O_CREAT 和 _O_EXCL 标志,但命名的文件已存在。 |
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 |
结果太大。 数学函数的自变量太大,造成结果中的有效位部分或全部丢失。 当参数大于预期值时(例如,当 _getcwd 的 buffer 参数大于预期值时),在其他函数中也可能发生此错误。 |
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 |