Error numbers
From cppreference.net
在 <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
|
|
所有值都必须是唯一的,但
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 << "已知错误代码/消息:\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 ); }
可能的输出:
已知错误代码/消息:
E2BIG: 参数列表过长
EACCES: 权限被拒绝
EADDRINUSE: 地址已被使用
EADDRNOTAVAIL: 无法分配请求的地址
EAFNOSUPPORT: 协议不支持地址族
EAGAIN: 资源暂时不可用
EALREADY: 操作已在执行中
EBADF: 错误的文件描述符
EBADMSG: 错误的消息
EBUSY: 设备或资源忙
ECANCELED: 操作已取消
ECHILD: 无子进程
ECONNABORTED: 软件导致连接中止
ECONNREFUSED: 连接被拒绝
ECONNRESET: 对端重置连接
EDEADLK: 已避免资源死锁
EDESTADDRREQ: 需要目标地址
EDOM: 数值参数超出定义域
EEXIST: 文件已存在
EFAULT: 错误的地址
EFBIG: 文件过大
EHOSTUNREACH: 无法路由到主机
EIDRM: 标识符已移除
EILSEQ: 无效或不完整的多字节或宽字符
EINPROGRESS: 操作正在进行中
EINTR: 系统调用被中断
EINVAL: 无效参数
EIO: 输入/输出错误
EISCONN: 传输端点已连接
EISDIR: 是一个目录
ELOOP: 符号链接层数过多
EMFILE: 打开文件过多
EMLINK: 链接过多
EMSGSIZE: 消息过长
ENAMETOOLONG: 文件名过长
ENETDOWN: 网络已关闭
ENETRESET: 网络在重置时断开连接
ENETUNREACH: 网络不可达
ENFILE: 系统中打开文件过多
ENOBUFS: 无缓冲区空间可用
ENODATA: 无可用数据
ENODEV: 无此设备
ENOENT: 无此文件或目录
ENOEXEC: 执行格式错误
ENOLCK: 无可用锁
ENOLINK: 链接已被切断
ENOMEM: 无法分配内存
ENOMSG: 无所需类型的消息
ENOPROTOOPT: 协议不可用
ENOSPC: 设备无剩余空间
ENOSR: 流资源耗尽
ENOSTR: 设备不是流
ENOSYS: 功能未实现
ENOTCONN: 传输端点未连接
ENOTDIR: 不是目录
ENOTEMPTY: 目录非空
ENOTRECOVERABLE: 状态不可恢复
ENOTSOCK: 在非套接字上执行套接字操作
ENOTSUP: 操作不被支持
ENOTTY: 不适当的ioctl操作
ENXIO: 无此设备或地址
EOPNOTSUPP: 操作不被支持
EOVERFLOW: 值超出定义的数据类型范围
EOWNERDEAD: 所有者已终止
EPERM: 操作不被允许
EPIPE: 管道破裂
EPROTO: 协议错误
EPROTONOSUPPORT: 协议不被支持
EPROTOTYPE: 套接字协议类型错误
ERANGE: 数值结果超出范围
EROFS: 只读文件系统
ESPIPE: 非法定位
ESRCH: 无此进程
ETIME: 计时器超时
ETIMEDOUT: 连接超时
ETXTBSY: 文本文件忙
EWOULDBLOCK: 资源暂时不可用
EXDEV: 无效的跨设备链接
参见
|
(C++11)
|
枚举所有标准
<cerrno>
宏常量的
std::error_condition
枚举
(类) |
|
扩展为 POSIX 兼容的线程局部错误编号变量的宏
(宏变量) |
|
|
向
stderr
输出当前错误对应的字符串
(函数) |
|
|
返回给定错误码的文本描述
(函数) |
|
|
C 文档
关于
错误编号
|
|