Linux 错误代码
Linux 错误代码
Linux 错误代码是在工作或使用程序时系统发生错误时显示的代码。可以借助错误代码识别错误。错误代码帮助我们识别错误的来源。
如果我们在 Linux 系统上工作,很明显我们可能会遇到错误。有些错误可能很小,可能不会导致程序中断。但是可能会出现一些错误,导致系统或程序停止响应。这些错误可能导致数据丢失或可能阻止程序完成。大多数错误以代码或消息的形式显示。
在本节中,我们将看到 C 编程中的错误以及 Linux 系统。
C 编程中的 Linux 错误
熟练的程序员应该知道如何处理这些错误。 C 编程语言不提供对错误处理的直接支持。我们必须检测错误的来源并进行处理。在 C 语言中,返回值显示失败或成功。如果 C 程序中的某个函数失败,我们必须相应地处理错误;否则,它会将错误最后记录在日志文件中。
在执行 C 程序时,我们可能会注意到一些错误编号,例如"错误编号: 17"。在这里,错误号 17 表示文件已经存在。每个错误编号都有一定的含义。
C 语言支持一个变量'errorno。'通过使用这个错误号变量,我们可以使用一些错误处理函数来正确处理它。
要使用外部变量错误号,我们必须包含一个头文件'errno.h.'。
头文件用于定义 'errno' 变量。 errno 变量由发生错误时的系统调用和库函数设置。 C编程语言中有两个重要的函数来处理错误; perror 和 strerror。 perror 函数用于打印错误描述,sterror 函数返回一个包含错误代码的字符串。
让我们使用 errno 来显示错误代码列表。
Linux errno
errno 实用程序用于查找 errno 代码、宏名称和相应的描述。例如,如果我们在 Linux 系统上提供 ENOENT,它将显示代码 2 和描述 "没有这样的文件或目录"。如果我们提供代码 2,那么它将显示 ENOENT 及其描述。
如果我们的机器上没有安装 errno 实用程序,它将显示如下错误:
要安装它,请执行以下命令:
sudo apt install moreutils
通过执行上面的命令,moreutils 包安装在我们的机器上,其中包含 errno 实用程序。
显示错误代码列表
要显示错误代码列表,执行如下命令:
以上命令将显示 RedHat 的错误代码列表。考虑以下输出:
显示一个错误编号
要显示特定错误编号的信息,请执行以下命令:
以上命令将显示错误编号 2 的描述。考虑以下输出:
显示错误名称的信息
要显示特定错误名称的信息,请执行 errno 命令,后跟错误名称。例如要显示错误名称'ESRCH'的信息,执行如下命令:
以上命令将显示指定错误名称的信息。考虑以下输出:
使用字符串显示错误
要使用描述中的字符串显示错误描述,请执行如下命令:
以上命令将显示描述包含字符串权限的错误。考虑以下输出:
Linux 系统错误列表
以下是部分Linux系统可能的错误列表:
错误代码 |
错误号 |
说明 |
EPERM |
1 |
如果不允许操作则显示。 |
ENOENT |
2 |
不存在该文件或目录时显示。 |
ESRCH |
3 |
如果不存在该进程则显示。 |
EINTR |
4 |
显示中断的系统调用 |
EIO |
5 |
输入/输出错误显示。 |
ENXIO |
6 |
如果不存在这样的设备或地址,则显示。 |
E2BIG |
7 |
参数列表过长时显示。 |
ENOEXEC |
8 |
执行格式错误时显示 |
EBADF |
9 |
文件描述符错误时显示。 |
ECHILD |
10 |
如果不存在子进程则显示。 |
EAGAIN |
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 |
非法搜索时显示。 |
EROFS |
30 |
只读文件系统时显示。 |
EMLINK |
31 |
链接过多时显示。 |
EPIPE |
32 |
断管时显示。 |
EDOM |
33 |
数值参数在域外时显示。 |
ERANGE |
34 |
数值结果超出范围显示。 |
EDEADLK |
35 |
避免资源死锁显示。 |
ENAMETOOLONG |
36 |
文件名太长显示。 |
ENOLCK |
37 |
无锁可用时显示。 |
ENOSYS |
38 |
函数未实现时显示泰德。 |
经济性 |
39 |
目录不为空时显示。 |
ELOOP |
40 |
符号链接层数过多时显示。 |
ENOMSG |
42 |
如果没有所需类型的消息,则显示。 |
EIDRM |
43 |
去掉标识符后显示。 |
ECHRNG |
44 |
通道号超出范围显示。 |
EL2NSYNC |
45 |
2级不同步时显示。 |
EL3HLT |
46 |
Level 3 停止时显示。 |
EL3RST |
47 |
Level 3 重置时显示。 |
ELNRNG |
48 |
链接号超出范围显示。 |
EUNATCH |
49 |
未连接协议驱动时显示。 |
ENOCSI |
50 |
如果没有可用的CSI结构,则显示。 |
EL2HLT |
51 |
Level 2 停止时显示。 |
EBADE |
52 |
无效交换时显示。 |
EBADR |
53 |
请求描述符无效时显示。 |
EXFULL |
54 |
兑换满时显示。 |
伊诺诺 |
55 |
无阳极时显示。 |
EBADRQC |
56 |
请求代码无效时显示。 |
EBADSLT |
57 |
无效槽位显示。 |
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 |
显示多跳尝试。 |
EDOTDOT |
73 |
显示为 RFS 特定错误。 |
EBADMSG |
74 |
显示错误信息。 |
EOVERFLOW |
75 |
如果值对于定义的数据类型太大,则显示。 |
ENOTUNIQ |
76 |
名称在网络上不唯一时显示。 |
EBADFD |
77 |
文件描述符状态错误时显示。 |
EREMCHG |
78 |
远程地址改变时显示。 |
ELIBACC |
79 |
如果我们无法访问所需的共享库,则会显示它。 |
伊利巴德 |
80 |
在访问损坏的共享库时显示。 |
ELIBSCN |
81 |
如果a.out中有.lib段被破坏会显示。 |
ELIBMAX |
82 |
如果我们试图链接太多共享库,则会显示它。 |
ELIBEXEC |
83 |
如果不能直接执行共享库会显示。 |
EILSEQ |
84 |
显示无效或不完整的多字节或宽字符 |
ERESTART |
85 |
显示通知被中断的系统调用应该重新启动。 |
ESTRPIPE |
86 |
如果有流管道错误显示。 |
EUSERS |
87 |
显示给太多用户。 |
ENOTSOCK |
88 |
非socket上的socket操作时显示。 |
EDESTADDRREQ |
89 |
需要目的地址时显示。 |
EMSGSIZE |
90 |
如果消息太长则显示。 |
EPROTOTYPE |
91 |
socket协议类型错误时显示。 |
ENOPROTOOPT |
92 |
协议不可用时显示。 |
EPROTONOS支持 |
93 |
协议不支持时显示。 |
ESOCKTNOS 支持 |
94 |
不支持Socket类型时显示。 |
EOPNOTSUPP |
95 |
不支持操作时显示。 |
EPFNOSUPPORT |
96 |
不支持协议族时显示。 |
EAFNOSUPPORT |
97 |
协议不支持地址族时显示。 |
EADDRINUSE |
98 |
如果地址已被使用则显示。 |
EADDRNOTAVAIL |
99 |
系统无法分配请求地址时显示。 |
ENETDOWN |
100 |
网络中断时显示。 |
ENETUNREACH |
101 |
网络不通时显示。 |
ENETRESET |
102 |
如果网络在重置时断开连接会显示。 |
ECONNABORTED |
103 |
如果软件导致连接中止显示。 |
ECONNRESET |
104 |
如果连接被peer重置则显示。 |
ENOBUFS |
105 |
无可用缓冲空间时显示。 |
EISCONN |
106 |
如果传输端点已经连接,则显示。 |
ENOTCONN |
107 |
未连接传输端点时显示。 |
ESHUTDOWN |
108 |
传输端点关闭后系统无法发送显示。 |
ETOOMANYREFS |
109 |
引用过多时显示: 无法拼接 |
ETIMEDOUT |
110 |
连接超时显示。 |
ECONNREFUSED |
111 |
连接被拒绝时显示。 |
EHOSTDOWN |
112 |
Host 宕机时显示。 |
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 |
介质类型错误显示。 |
取消 |
125 |
取消操作时显示。 |
ENOKEY |
126 |
如果所需的密钥不可用则显示。 |
EKEYEXPIRED |
127 |
如果密钥已过期则显示。 |
EKEYREVOKED |
128 |
如果密钥已被撤销则显示。 |
EKEYREJECTED |
129 |
密钥被服务拒绝时显示。 |
EOWNERDEAD |
130 |
所有者死亡时显示。 |
ENOTRECOVERABLE |
131 |
显示为不可恢复状态。 |
ERFKILL |
132 |
RF-kill 导致无法操作时显示。 |
EHWPOISON |
133 |
内存页有硬件错误时显示。 |