Linux 错误代码

2025年03月17日 | 阅读 9 分钟

Linux 错误代码是在使用或操作系统时显示的错误代码。可以通过错误代码来识别错误。错误代码有助于我们识别错误的根源。

如果您在使用 Linux 系统,遇到错误是正常的。有些错误可能很小,不会导致程序中断。但也有些错误可能导致系统或程序停止响应。这些错误可能导致数据丢失,或阻止程序完成。大多数错误以代码或消息的形式显示。

在本节中,我们将看到 C 编程中的错误以及 Linux 系统中可能出现的错误列表。

C 编程中的 Linux 错误

熟练的程序员应该知道如何处理错误。C 编程语言不直接支持错误处理。我们需要检测错误的根源并加以处理。在 C 语言中,返回值表示失败或成功。如果 C 程序中的函数失败,我们必须相应地处理错误;否则,它会将错误记录在日志文件中。

在执行 C 程序时,我们可能会注意到一些错误编号,例如“错误编号是:17”。这里,错误编号 17 表示文件已存在。每个错误编号都有其含义。

C 语言支持一个名为 'errorno' 的变量。通过使用这个错误编号变量,我们可以使用一些错误处理函数来妥善处理它。

要使用外部变量错误编号,我们需要包含一个头文件 'errno.h'。<error.h> 头文件用于定义 'errno' 变量。在发生错误时,系统调用和库函数会设置 errno 变量。C 编程语言中有两个重要的函数用于处理错误:perrorstrerror。perror 函数用于打印错误描述,strerror 函数返回一个包含错误代码的字符串。

让我们使用 errno 显示错误代码列表。

Linux errno

errno 工具用于查找 errno 代码、宏名称以及相应的描述。例如,如果在 Linux 系统上提供 ENOENT,它将显示代码 2 和描述 “文件或目录不存在。” 如果提供代码 2,它将显示 ENOENT 及其描述

如果我们的机器上没有安装 errno 工具,它将显示如下错误

Linux Error Codes

要安装它,请执行以下命令

通过执行上述命令,moreutils 包已安装在我们的机器上,其中包含 errno 工具。

Linux Error Codes

显示错误代码列表

要显示错误代码列表,请执行以下命令

上述命令将显示 RedHat 的错误代码列表。请参考以下输出

Linux Error Codes

显示错误编号的信息

要显示特定错误编号的信息,请执行以下命令

上述命令将显示错误编号 2 的描述。请参考以下输出

Linux Error Codes

显示错误名称的信息

要显示特定错误名称的信息,请执行 errno 命令,然后是错误名称。例如,要显示错误名称 'ESRCH' 的信息,请执行以下命令

上述命令将显示有关指定错误名称的信息。请参考以下输出

Linux Error Codes

使用字符串显示错误

要使用描述中的字符串显示错误描述,请执行以下命令

上述命令将显示描述包含“permission”的错误。请参考以下输出

Linux Error Codes

Linux 系统错误列表

以下是 Linux 系统可能出现的错误的部分列表

错误代码错误编号描述
EPERM1如果操作不允许,则显示此错误。
ENOENT2如果文件或目录不存在,则显示此错误。
ESRCH3如果没有找到指定进程,则显示此错误。
EINTR4显示“中断的系统调用”
EIO5显示“输入/输出错误。”
ENXIO6如果没有找到指定设备或地址,则显示此错误。
E2BIG7如果参数列表太长,则显示此错误。
ENOEXEC8如果存在执行格式错误,则显示此错误
EBADF9在文件描述符错误时显示。
ECHILD10如果没有找到子进程,则显示此错误。
EAGAIN11如果资源暂时不可用,则显示此错误。
ENOMEM12如果系统无法分配内存,则显示此错误。
EACCES13如果权限被拒绝,则显示此错误。
EFAULT14如果地址无效,则显示此错误。
ENOTBLK15如果需要块设备,则显示此错误。
EBUSY16如果设备或资源被占用,则显示此错误。
EEXIST17如果文件已存在,则显示此错误。
EXDEV18如果存在无效的跨设备链接,则显示此错误。
ENODEV19如果没有找到指定设备,则显示此错误。
ENOTDIR20如果不是目录,则显示此错误。
EISDIR21如果是目录,则显示此错误。
EINVAL22如果参数无效,则显示此错误。
ENFILE23如果系统中打开的文件过多,则显示此错误。
EMFILE24如果打开的文件过多,则显示此错误。
ENOTTY25如果设备不适用的 ioctl,则显示此错误。
ETXTBSY26如果文本文件被占用,则显示此错误。
EFBIG27如果文件太大,则显示此错误。
ENOSPC28如果设备上没有剩余空间,则显示此错误。
ESPIPE29在非法 seek 时显示。
EROFS30在只读文件系统时显示。
EMLINK31如果链接过多,则显示此错误。
EPIPE32在管道破裂时显示。
EDOM33如果数值参数超出定义域,则显示此错误。
ERANGE34如果数值结果超出范围,则显示此错误。
EDEADLK35如果避免了资源死锁,则显示此错误。
ENAMETOOLONG36如果文件名太长,则显示此错误。
ENOLCK37如果无法获得锁,则显示此错误。
ENOSYS38如果函数未实现,则显示此错误。
ENOTEMPTY39如果目录非空,则显示此错误。
ELOOP40如果符号链接的层级过多,则显示此错误。
ENOMSG42如果不存在所需类型的消息,则显示此错误。
EIDRM43如果标识符已被移除,则显示此错误。
ECHRNG44如果通道号超出范围,则显示此错误。
EL2NSYNC45如果级别 2 未同步,则显示此错误。
EL3HLT46如果级别 3 已停止,则显示此错误。
EL3RST47如果级别 3 已重置,则显示此错误。
ELNRNG48如果链接号超出范围,则显示此错误。
EUNATCH49如果协议驱动程序未附加,则显示此错误。
ENOCSI50如果不存在 CSI 结构,则显示此错误。
EL2HLT51如果级别 2 已停止,则显示此错误。
EBADE52在交换无效时显示。
EBADR53在请求描述符无效时显示。
EXFULL54如果交换已满,则显示此错误。
ENOANO55在“无节点”时显示。
EBADRQC56显示无效的请求代码。
EBADSLT57显示无效的插槽。
EBFONT59如果字体文件格式错误,则显示此错误。
ENOSTR60如果设备不是流,则显示此错误。
ENODATA61如果没有可用数据,则显示此错误。
ETIME62在计时器过期时显示。
ENOSR63在流资源不足时显示。
ENONET64如果机器未连接到网络,则显示此错误。
ENOPKG65如果软件包未安装,则显示此错误。
EREMOTE66如果对象是远程的,则显示此错误。
ENOLINK67如果链路已断开,则显示此错误。
EADV68显示广告错误。
ESRMNT69显示 Srmount 错误。
ECOMM70如果在发送通信时发生错误,则显示此错误。
EPROTO71显示协议错误。
EMULTIHOP72显示尝试了多跳。
EDOTDOT73显示 RFS 特定的错误。
EBADMSG74显示“消息无效。”
EOVERFLOW75如果值对于定义的数据类型来说太大,则显示此错误。
ENOTUNIQ76如果网络名称不唯一,则显示此错误。
EBADFD77如果文件描述符处于不良状态,则显示此错误。
EREMCHG78如果远程地址已更改,则显示此错误。
ELIBACC79如果我们无法访问所需的共享库,则显示此错误。
ELIBBAD80在访问损坏的共享库时显示。
ELIBSCN81如果在 a.out 中存在 .lib 段损坏,则显示此错误。
ELIBMAX82如果我们尝试链接过多的共享库,则显示此错误。
ELIBEXEC83如果我们无法直接执行共享库,则显示此错误。
EILSEQ84显示无效或不完整的多字节字符或宽字符
ERESTART85显示通知中断的系统调用应重新启动。
ESTRPIPE86显示流管道错误。
EUSERS87显示用户过多。
ENOTSOCK88在非套接字上执行套接字操作时显示。
EDESTADDRREQ89如果需要目标地址,则显示此错误。
EMSGSIZE90如果消息太长,则显示此错误。
EPROTOTYPE91如果套接字的协议类型错误,则显示此错误。
ENOPROTOOPT92如果协议不可用,则显示此错误。
EPROTONOSUPPORT93如果协议不受支持,则显示此错误。
ESOCKTNOSUPPORT94如果套接字类型不受支持,则显示此错误。
EOPNOTSUPP95如果操作不受支持,则显示此错误。
EPFNOSUPPORT96如果协议族不受支持,则显示此错误。
EAFNOSUPPORT97如果协议不支持地址族,则显示此错误。
EADDRINUSE98如果地址已在使用中,则显示此错误。
EADDRNOTAVAIL99如果系统无法分配请求的地址,则显示此错误。
ENETDOWN100如果网络已断开,则显示此错误。
ENETUNREACH101如果网络无法访问,则显示此错误。
ENETRESET102如果在重置时网络中断了连接,则显示此错误。
ECONNABORTED103如果软件导致连接中止,则显示此错误。
ECONNRESET104如果连接被对端重置,则显示此错误。
ENOBUFS105如果没有可用的缓冲区空间,则显示此错误。
EISCONN106如果传输端点已连接,则显示此错误。
ENOTCONN107如果传输端点未连接,则显示此错误。
ESHUTDOWN108如果在传输端点关闭后系统无法发送,则显示此错误。
ETOOMANYREFS109如果引用过多:无法拼接。
ETIMEDOUT110如果连接超时,则显示此错误。
ECONNREFUSED111如果连接被拒绝,则显示此错误。
EHOSTDOWN112如果主机已断开,则显示此错误。
EHOSTUNREACH113如果没有到主机的路由,则显示此错误。
EALREADY114如果操作已在进行中,则显示此错误。
EINPROGRESS115如果操作现在正在进行中,则显示此错误。
ESTALE116显示“过时的文件句柄”。
EUCLEAN117如果结构需要清理,则显示此错误。
ENOTNAM118显示“不是 XENIX 命名类型文件”。
ENAVAIL119如果 XENIX 信号量不可用,则显示此错误。
EISNAM120如果存在命名类型文件,则显示此错误。
EREMOTEIO121显示远程 I/O 错误。
EDQUOT122如果超出磁盘配额,则显示此错误。
ENOMEDIUM123如果没有找到介质,则显示此错误。
EMEDIUMTYPE124如果介质类型错误,则显示此错误。
ECANCELED125如果操作被取消,则显示此错误。
ENOKEY126如果所需密钥不可用,则显示此错误。
EKEYEXPIRED127如果密钥已过期,则显示此错误。
EKEYREVOKED128如果密钥已被吊销,则显示此错误。
EKEYREJECTED129如果密钥被服务拒绝,则显示此错误。
EOWNERDEAD130如果所有者已死亡,则显示此错误。
ENOTRECOVERABLE131显示“无法恢复状态”。
ERFKILL132如果由于 RF-kill 操作无法执行,则显示此错误。
EHWPOISON133如果内存页出现硬件错误,则显示此错误。

下一个主题面试题