简介
- Linux POSIX
详解
Linux POSIX 详解
在 Linux POSIX 系统中,<errno.h>
头文件定义了 errno
,这是一个特殊的全局变量,用于指示发生错误时的错误码。errno
提供了对发生错误的类型进行识别的机制。
以下是关于 <errno.h>
头文件和 errno
变量的详细解释:
功能
<errno.h>
头文件定义了一组可能的错误码,每个错误码对应一个特定的错误情况。- 当系统函数或库函数出现错误时,会设置
errno
变量,以表示特定类型的错误。
errno
变量
errno
是一个全局的int
类型变量,存储了最近一次发生错误的错误码。- 错误码的值可以是 POSIX 定义的标准错误码,也可以是特定的系统错误码。
示例用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
FILE *file = fopen("nonexistent_file.txt", "r");
if (file == NULL) {
printf("无法打开文件,错误码: %d\n", errno);
// 使用 perror 打印出错误信息
perror("fopen() 错误");
// 根据错误码输出错误信息
switch (errno) {
case ENOENT:
printf("文件不存在\n");
break;
case EACCES:
printf("权限不足\n");
break;
default:
printf("未知错误\n");
break;
}
}
return 0;
}
注意事项
- 错误码的值在不同的系统中可能会有所不同,但 POSIX 标准定义了一组常见的错误码,通常在不同的系统中保持一致性。
- 在检测系统调用或库函数是否失败后,可以通过检查
errno
变量来获取特定的错误码,以便对错误类型进行判断和处理。
<errno.h>
头文件中的 errno
变量是处理错误的重要机制,可以帮助程序员识别和处理在执行系统调用或库函数时发生的错误。
Linux POSIX 常用错误码
在 Linux POSIX 系统中,<errno.h>
头文件定义了一组常见的错误码,用于标识在系统调用或库函数执行过程中可能发生的各种错误情况。以下是一些常见的错误码及其含义:
-
EACCES
(13):权限不足,表示访问权限被拒绝。 -
EEXIST
(17):文件已存在,通常用于创建文件时,指定了一个已经存在的文件名。 -
EINVAL
(22):无效的参数,表示传递给函数的参数无效或不合法。 -
ENOENT
(2):文件或目录不存在,用于指示找不到指定的文件或路径。 -
ENOMEM
(12):内存不足,表示没有足够的内存可用。 -
ENOSPC
(28):空间不足,用于指示磁盘空间不足。 -
EIO
(5):输入/输出错误,表示发生了与设备或文件系统I/O相关的错误。 -
EFAULT
(14):地址错误,表示传递给函数的地址无效。 -
EBADF
(9):无效的文件描述符,用于表示传递给函数的文件描述符无效。 -
EPIPE
(32):管道破裂,表示尝试向一个已关闭的管道写入数据。 -
EINTR
(4):中断的系统调用,表示一个系统调用被中断。 -
ETIMEDOUT
(110):操作超时,指示操作超出了预定的时间限制。
这些错误码代表了可能在程序执行中遇到的常见错误情况。当系统调用或库函数返回一个失败状态时,通过检查 errno
变量并根据相应的错误码进行处理,可以更好地识别和解决程序中的问题。