错误号
来自 cppreference.cn
在 <cerrno> 中定义的每个宏都扩展为类型为 int 的整型常量表达式,每个表达式都具有正值,与大多数 POSIX 错误码匹配。定义了以下常量(实现可以定义更多,只要它们以 'E' 后跟数字或大写字母开头)。
| 定义于头文件
<cerrno> | |
| E2BIG (C++11) |
参数列表过长 (宏常量) |
| EACCES (C++11) |
权限被拒绝 (宏常量) |
| EADDRINUSE (C++11) |
地址已在使用 (宏常量) |
| EADDRNOTAVAIL (C++11) |
地址不可用 (宏常量) |
| EAFNOSUPPORT (C++11) |
地址族不支持 (宏常量) |
| EAGAIN (C++11) |
资源不可用,请重试 (宏常量) |
| EALREADY (C++11) |
连接已在进行中 (宏常量) |
| EBADF (C++11) |
错误的文件描述符 (宏常量) |
| EBADMSG (C++11) |
错误的消息 (宏常量) |
| EBUSY (C++11) |
设备或资源忙 (宏常量) |
| ECANCELED (C++11) |
操作已取消 (宏常量) |
| ECHILD (C++11) |
无子进程 (宏常量) |
| ECONNABORTED (C++11) |
连接已中止 (宏常量) |
| ECONNREFUSED (C++11) |
连接被拒绝 (宏常量) |
| ECONNRESET (C++11) |
连接已重置 (宏常量) |
| EDEADLK (C++11) |
将发生资源死锁 (宏常量) |
| EDESTADDRREQ (C++11) |
需要目标地址 (宏常量) |
| EDOM |
数学参数超出函数域 (宏常量) |
| EEXIST (C++11) |
文件已存在 (宏常量) |
| EFAULT (C++11) |
错误的地址 (宏常量) |
| EFBIG (C++11) |
文件过大 (宏常量) |
| EHOSTUNREACH (C++11) |
主机不可达 (宏常量) |
| EIDRM (C++11) |
标识符已移除 (宏常量) |
| EILSEQ (C++11) |
非法字节序列 (宏常量) |
| EINPROGRESS (C++11) |
操作正在进行中 (宏常量) |
| EINTR (C++11) |
中断的函数 (宏常量) |
| EINVAL (C++11) |
无效参数 (宏常量) |
| EIO (C++11) |
I/O 错误 (宏常量) |
| EISCONN (C++11) |
套接字已连接 (宏常量) |
| EISDIR (C++11) |
是目录 (宏常量) |
| ELOOP (C++11) |
符号链接级别过多 (宏常量) |
| EMFILE (C++11) |
文件描述符值过大 (宏常量) |
| EMLINK (C++11) |
链接过多 (宏常量) |
| EMSGSIZE (C++11) |
消息过大 (宏常量) |
| ENAMETOOLONG (C++11) |
文件名过长 (宏常量) |
| ENETDOWN (C++11) |
网络已关闭 (宏常量) |
| ENETRESET (C++11) |
网络中止连接 (宏常量) |
| ENETUNREACH (C++11) |
网络不可达 (宏常量) |
| ENFILE (C++11) |
系统中打开文件过多 (宏常量) |
| ENOBUFS (C++11) |
无可用缓冲区空间 (宏常量) |
| ENODATA (C++11) |
STREAM 头读取队列上无可用消息 (宏常量) |
| ENODEV (C++11) |
无此设备 (宏常量) |
| ENOENT (C++11) |
无此文件或目录 (宏常量) |
| ENOEXEC (C++11) |
可执行文件格式错误 (宏常量) |
| ENOLCK (C++11) |
无可用锁 (宏常量) |
| ENOLINK (C++11) |
链接已断开 (宏常量) |
| ENOMEM (C++11) |
空间不足 (宏常量) |
| ENOMSG (C++11) |
无所需类型的消息 (宏常量) |
| ENOPROTOOPT (C++11) |
协议不可用 (宏常量) |
| ENOSPC (C++11) |
设备上无剩余空间 (宏常量) |
| ENOSR (C++11) |
无 STREAM 资源 (宏常量) |
| ENOSTR (C++11) |
不是 STREAM (宏常量) |
| ENOSYS (C++11) |
函数不支持 (宏常量) |
| ENOTCONN (C++11) |
套接字未连接 (宏常量) |
| ENOTDIR (C++11) |
不是目录 (宏常量) |
| ENOTEMPTY (C++11) |
目录不为空 (宏常量) |
| ENOTRECOVERABLE (C++11) |
状态不可恢复 (宏常量) |
| ENOTSOCK (C++11) |
不是套接字 (宏常量) |
| ENOTSUP (C++11) |
不支持 (宏常量) |
| ENOTTY (C++11) |
不适当的 I/O 控制操作 (宏常量) |
| ENXIO (C++11) |
无此设备或地址 (宏常量) |
| EOPNOTSUPP (C++11) |
套接字上不支持此操作 (宏常量) |
| EOVERFLOW (C++11) |
值过大无法存储在数据类型中 (宏常量) |
| EOWNERDEAD (C++11) |
前一个所有者已死亡 (宏常量) |
| EPERM (C++11) |
操作不允许 (宏常量) |
| EPIPE (C++11) |
管道破裂 (宏常量) |
| EPROTO (C++11) |
协议错误 (宏常量) |
| EPROTONOSUPPORT (C++11) |
协议不支持 (宏常量) |
| EPROTOTYPE (C++11) |
套接字协议类型错误 (宏常量) |
| ERANGE |
结果过大 (宏常量) |
| EROFS (C++11) |
只读文件系统 (宏常量) |
| ESPIPE (C++11) |
无效的寻道 (宏常量) |
| ESRCH (C++11) |
无此进程 (宏常量) |
| ETIME (C++11) |
流 ioctl() 超时 (宏常量) |
| ETIMEDOUT (C++11) |
连接超时 (宏常量) |
| ETXTBSY (C++11) |
文本文件忙 (宏常量) |
| EWOULDBLOCK (C++11) |
操作将阻塞 (宏常量) |
| EXDEV (C++11) |
跨设备链接 (宏常量) |
所有值都必须是唯一的,但 EOPNOTSUPP 和 ENOTSUP 的值可以相同,并且 EAGAIN 和 EWOULDBLOCK 的值可以相同。
[编辑] 示例
运行此代码
#include <cerrno> #include <cstring> #include <iomanip> #include <iostream> #define SHOW(x) std::cout << std::setw(15) << #x << ": " << std::strerror(x) << '\n' int main() { std::cout << "Known error codes/messages:\n\n"; SHOW( E2BIG ); SHOW( EACCES ); SHOW( EADDRINUSE ); SHOW( EADDRNOTAVAIL ); SHOW( EAFNOSUPPORT ); SHOW( EAGAIN ); SHOW( EALREADY ); SHOW( EBADF ); SHOW( EBADMSG ); SHOW( EBUSY ); SHOW( ECANCELED ); SHOW( ECHILD ); SHOW( ECONNABORTED ); SHOW( ECONNREFUSED ); SHOW( ECONNRESET ); SHOW( EDEADLK ); SHOW( EDESTADDRREQ ); SHOW( EDOM ); SHOW( EEXIST ); SHOW( EFAULT ); SHOW( EFBIG ); SHOW( EHOSTUNREACH ); SHOW( EIDRM ); SHOW( EILSEQ ); SHOW( EINPROGRESS ); SHOW( EINTR ); SHOW( EINVAL ); SHOW( EIO ); SHOW( EISCONN ); SHOW( EISDIR ); SHOW( ELOOP ); SHOW( EMFILE ); SHOW( EMLINK ); SHOW( EMSGSIZE ); SHOW( ENAMETOOLONG ); SHOW( ENETDOWN ); SHOW( ENETRESET ); SHOW( ENETUNREACH ); SHOW( ENFILE ); SHOW( ENOBUFS ); SHOW( ENODATA ); SHOW( ENODEV ); SHOW( ENOENT ); SHOW( ENOEXEC ); SHOW( ENOLCK ); SHOW( ENOLINK ); SHOW( ENOMEM ); SHOW( ENOMSG ); SHOW( ENOPROTOOPT ); SHOW( ENOSPC ); SHOW( ENOSR ); SHOW( ENOSTR ); SHOW( ENOSYS ); SHOW( ENOTCONN ); SHOW( ENOTDIR ); SHOW( ENOTEMPTY ); SHOW( ENOTRECOVERABLE ); SHOW( ENOTSOCK ); SHOW( ENOTSUP ); SHOW( ENOTTY ); SHOW( ENXIO ); SHOW( EOPNOTSUPP ); SHOW( EOVERFLOW ); SHOW( EOWNERDEAD ); SHOW( EPERM ); SHOW( EPIPE ); SHOW( EPROTO ); SHOW( EPROTONOSUPPORT ); SHOW( EPROTOTYPE ); SHOW( ERANGE ); SHOW( EROFS ); SHOW( ESPIPE ); SHOW( ESRCH ); SHOW( ETIME ); SHOW( ETIMEDOUT ); SHOW( ETXTBSY ); SHOW( EWOULDBLOCK ); SHOW( EXDEV ); }
可能的输出
Known error codes/messages:
E2BIG: Argument list too long
EACCES: Permission denied
EADDRINUSE: Address already in use
EADDRNOTAVAIL: Cannot assign requested address
EAFNOSUPPORT: Address family not supported by protocol
EAGAIN: Resource temporarily unavailable
EALREADY: Operation already in progress
EBADF: Bad file descriptor
EBADMSG: Bad message
EBUSY: Device or resource busy
ECANCELED: Operation canceled
ECHILD: No child processes
ECONNABORTED: Software caused connection abort
ECONNREFUSED: Connection refused
ECONNRESET: Connection reset by peer
EDEADLK: Resource deadlock avoided
EDESTADDRREQ: Destination address required
EDOM: Numerical argument out of domain
EEXIST: File exists
EFAULT: Bad address
EFBIG: File too large
EHOSTUNREACH: No route to host
EIDRM: Identifier removed
EILSEQ: Invalid or incomplete multibyte or wide character
EINPROGRESS: Operation now in progress
EINTR: Interrupted system call
EINVAL: Invalid argument
EIO: Input/output error
EISCONN: Transport endpoint is already connected
EISDIR: Is a directory
ELOOP: Too many levels of symbolic links
EMFILE: Too many open files
EMLINK: Too many links
EMSGSIZE: Message too long
ENAMETOOLONG: File name too long
ENETDOWN: Network is down
ENETRESET: Network dropped connection on reset
ENETUNREACH: Network is unreachable
ENFILE: Too many open files in system
ENOBUFS: No buffer space available
ENODATA: No data available
ENODEV: No such device
ENOENT: No such file or directory
ENOEXEC: Exec format error
ENOLCK: No locks available
ENOLINK: Link has been severed
ENOMEM: Cannot allocate memory
ENOMSG: No message of desired type
ENOPROTOOPT: Protocol not available
ENOSPC: No space left on device
ENOSR: Out of streams resources
ENOSTR: Device not a stream
ENOSYS: Function not implemented
ENOTCONN: Transport endpoint is not connected
ENOTDIR: Not a directory
ENOTEMPTY: Directory not empty
ENOTRECOVERABLE: State not recoverable
ENOTSOCK: Socket operation on non-socket
ENOTSUP: Operation not supported
ENOTTY: Inappropriate ioctl for device
ENXIO: No such device or address
EOPNOTSUPP: Operation not supported
EOVERFLOW: Value too large for defined data type
EOWNERDEAD: Owner died
EPERM: Operation not permitted
EPIPE: Broken pipe
EPROTO: Protocol error
EPROTONOSUPPORT: Protocol not supported
EPROTOTYPE: Protocol wrong type for socket
ERANGE: Numerical result out of range
EROFS: Read-only file system
ESPIPE: Illegal seek
ESRCH: No such process
ETIME: Timer expired
ETIMEDOUT: Connection timed out
ETXTBSY: Text file busy
EWOULDBLOCK: Resource temporarily unavailable
EXDEV: Invalid cross-device link[编辑] 参阅
| (C++11) |
std::error_condition 枚举列出所有标准 <cerrno> 宏常量 (类) |
| 扩展为 POSIX 兼容的线程局部错误码变量的宏 (宏变量) | |
| 将当前错误的字符串显示到 stderr (函数) | |
| 返回给定错误代码的文本版本 (函数) | |
| C 文档,关于 错误号
| |