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)
|
输入/输出错误
(宏常量) |
|
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)
|
非流设备
(宏常量) |
|
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文档
关于
错误编号
|
|