Linux 错误码含义
本文最后更新于 2022年4月2日 晚上
错误码
Linux 函数调用失败时,错误码存放于一个全局变量 errno 中。
错误码查询
Linux 可以安装 errno 工具来快速查看错误码的具体描述信息。
以 Ubuntu 为例:
1 | |
错误码查询表
| 宏名称 | 键值 | 描述 |
|---|---|---|
| EPERM | 1 | 不允许的操作 |
| ENOENT | 2 | 没有那个文件或目录 |
| ESRCH | 3 | 没有那个进程 |
| EINTR | 4 | 被中断的系统调用 |
| EIO | 5 | 输入/输出错误 |
| ENXIO | 6 | 没有那个设备或地址 |
| E2BIG | 7 | 参数列表过长 |
| ENOEXEC | 8 | 可执行文件格式错误 |
| EBADF | 9 | 错误的文件描述符 |
| ECHILD | 10 | 没有子进程 |
| EAGAIN | 11 | 资源暂时不可用 |
| EWOULDBLOCK | 11 | 资源暂时不可用 |
| ENOMEM | 12 | 无法分配内存 |
| EACCES | 13 | 权限不够 |
| EFAULT | 14 | 错误的地址 |
| ENOTBLK | 15 | 需要块设备 |
| EBUSY | 16 | 设备或资源忙 |
| EEXIST | 17 | 文件已存在 |
| EXDEV | 18 | 无效的跨设备链接 |
| ENODEV | 19 | 没有那个设备 |
| ENOTDIR | 20 | 不是目录 |
| EISDIR | 21 | 是一个目录 |
| EINVAL | 22 | 无效的参数 |
| ENFILE | 23 | 系统中打开的文件过多 |
| EMFILE | 24 | 打开的文件过多 |
| ENOTTY | 25 | 对设备不适当的 ioctl 操作 |
| ETXTBSY | 26 | 文本文件忙 |
| EFBIG | 27 | 文件过大 |
| ENOSPC | 28 | 设备上没有空间 |
| ESPIPE | 29 | 非法 seek 操作 |
| EROFS | 30 | 只读文件系统 |
| EMLINK | 31 | 过多的链接 |
| EPIPE | 32 | 断开的管道 |
| EDOM | 33 | 数值参数超出域 |
| ERANGE | 34 | 数值结果超出范围 |
| EDEADLK | 35 | 已避免资源死锁 |
| EDEADLOCK | 35 | 已避免资源死锁 |
| ENAMETOOLONG | 36 | 文件名过长 |
| ENOLCK | 37 | 没有可用的锁 |
| ENOSYS | 38 | 函数未实现 |
| ENOTEMPTY | 39 | 目录非空 |
| ELOOP | 40 | 符号连接的层数过多 |
| ENOMSG | 42 | 没有符合需求格式的消息 |
| EIDRM | 43 | 标识符已删除 |
| ECHRNG | 44 | 通道编号超出范围 |
| EL2NSYNC | 45 | 级别 2 尚未同步 |
| EL3HLT | 46 | 级别 3 已关闭 |
| EL3RST | 47 | 级别 3 已重置 |
| ELNRNG | 48 | 链接数超出范围 |
| EUNATCH | 49 | 未加载协议驱动程序 |
| ENOCSI | 50 | 没有可用的 CSI 结构 |
| EL2HLT | 51 | 级别 2 己关闭 |
| EBADE | 52 | 无效的交换 |
| EBADR | 53 | 无效的请求描述符 |
| EXFULL | 54 | 交换满 |
| ENOANO | 55 | 没有 anode |
| EBADRQC | 56 | 无效的请求码 |
| EBADSLT | 57 | 不适用的 slot |
| EBFONT | 59 | 错误的字体文件格式 |
| ENOSTR | 60 | 设备不是流 |
| ENODATA | 61 | 没有可用的数据 |
| ETIME | 62 | 计时器超时 |
| ENOSR | 63 | 流资源不足 |
| ENONET | 64 | 机器不在网络中 |
| ENOPKG | 65 | 包未安装 |
| EREMOTE | 66 | 对象是远程的 |
| ENOLINK | 67 | 链接已有服务 |
| EADV | 68 | 通知错误 |
| ESRMNT | 69 | Srmount 错误 |
| ECOMM | 70 | 发送时出现通讯错误 |
| EPROTO | 71 | 协议错误 |
| EMULTIHOP | 72 | 尝试 Multihop |
| EDOTDOT | 73 | RFS 特定错误 |
| EBADMSG | 74 | 错误的消息 |
| EOVERFLOW | 75 | 对已定义的数据类型来说值过大 |
| ENOTUNIQ | 76 | 网络上的名称不是唯一的 |
| EBADFD | 77 | 文件描述符处于错误状态 |
| EREMCHG | 78 | 远程地址已改变 |
| ELIBACC | 79 | 无法访问必须的共享库 |
| ELIBBAD | 80 | 正在访问一个已毁坏的共享库 |
| ELIBSCN | 81 | a.out 中的 .lib 节已毁坏 |
| ELIBMAX | 82 | 试图与过多的共享库相链接 |
| ELIBEXEC | 83 | 无法直接执行共享库 |
| EILSEQ | 84 | 无效或不完整的多字节字符或宽字符 |
| ERESTART | 85 | 被中断的系统调用应该重新启动 |
| ESTRPIPE | 86 | 流管道错误 |
| EUSERS | 87 | 用户过多 |
| ENOTSOCK | 88 | 对非套接字进行套接字操作 |
| EDESTADDRREQ | 89 | 需要目标地址 |
| EMSGSIZE | 90 | 消息过长 |
| EPROTOTYPE | 91 | 错误的 socket 协议类型 |
| ENOPROTOOPT | 92 | 不可用的协议 |
| EPROTONOSUPPORT | 93 | 不支持的协议 |
| ESOCKTNOSUPPORT | 94 | 不支持的套接字类型 |
| EOPNOTSUPP | 95 | 不支持的操作 |
| ENOTSUP | 95 | 不支持的操作 |
| EPFNOSUPPORT | 96 | 不支持的协议族 |
| EAFNOSUPPORT | 97 | 协议不支持的地址族 |
| EADDRINUSE | 98 | 地址已在使用 |
| EADDRNOTAVAIL | 99 | 无法指定被请求的地址 |
| ENETDOWN | 100 | 网络已关闭 |
| ENETUNREACH | 101 | 网络不可达 |
| ENETRESET | 102 | 重置时断开网络连接 |
| ECONNABORTED | 103 | 由软件导致的连接断开 |
| ECONNRESET | 104 | 连接被对方重设 |
| ENOBUFS | 105 | 没有可用的缓冲区空间 |
| EISCONN | 106 | 传输端点已连接 |
| ENOTCONN | 107 | 传输端点尚未连接 |
| ESHUTDOWN | 108 | 无法在传输端点关闭以后发送 |
| ETOOMANYREFS | 109 | 过多的引用:无法接合 |
| ETIMEDOUT | 110 | 连接超时 |
| ECONNREFUSED | 111 | 拒绝连接 |
| EHOSTDOWN | 112 | 主机关闭 |
| EHOSTUNREACH | 113 | 没有到主机的路由 |
| EALREADY | 114 | 操作已经在进行 |
| EINPROGRESS | 115 | 操作现在正在进行 |
| ESTALE | 116 | 过旧的文件控柄 |
| EUCLEAN | 117 | 结构需要清理 |
| ENOTNAM | 118 | 不是 XENIX 命名的类型文件 |
| ENAVAIL | 119 | 没有可用的 XENIX 信号量 |
| EISNAM | 120 | 是一个有名类型文件 |
| EREMOTEIO | 121 | 远程 I/O 错误 |
| EDQUOT | 122 | 超出磁盘限额 |
| ENOMEDIUM | 123 | 找不到介质 |
| EMEDIUMTYPE | 124 | 错误的介质类型 |
| ECANCELED | 125 | 操作已取消 |
| ENOKEY | 126 | 需要的关键字不存在 |
| EKEYEXPIRED | 127 | 关键字已过期 |
| EKEYREVOKED | 128 | 键值已取消 |
| EKEYREJECTED | 129 | 键值被服务所拒绝 |
| EOWNERDEAD | 130 | 拥有者已消逝 |
| ENOTRECOVERABLE | 131 | 状态无法回复 |
| ERFKILL | 132 | 由于 RF-kill 而无法操作 |
| EHWPOISON | 133 | 内存分页有硬件错误 |
Linux 错误码含义
https://muzing.top/posts/aba9894c/