Namespaces
Variants

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 文档 关于 错误编号