<errno.h> 是 C 语言标准库中的头文件,用于处理错误码(error codes)。它定义了一些宏,这些宏表示在程序执行期间可能发生的各种错误情况。当标准库函数或系统调用失败时,它们通常会设置全局变量 errno,以指示具体的错误类型。

以下是 <errno.h> 中定义的一些常见的错误码宏:

1. errno
   - errno 是一个全局变量,用于保存最后一次发生错误的错误码。当函数或系统调用失败时,errno 被设置为相应的错误码。

2. 错误码宏

   - EACCES:权限不足。
   - EBADF:文件描述符无效。
   - EEXIST:文件已存在。
   - EINVAL:无效的参数。
   - EMFILE:打开的文件太多。
   - ENOENT:文件或路径不存在。
   - ENOMEM:内存不足。
   - ENOTDIR:不是一个目录。
   - EIO:输入/输出错误。
   - EAGAIN:资源暂时不可用,通常是由于非阻塞操作而返回。

这里是一个简单的例子,演示如何使用 <errno.h> 处理文件操作中的错误:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main() {
    FILE *file = fopen("nonexistent.txt", "r");
    
    if (file == NULL) {
        perror("Error opening file");
        fprintf(stderr, "Error code: %d\n", errno);
        exit(EXIT_FAILURE);
    }

    // 执行文件操作...

    fclose(file);
    return 0;
}

在这个例子中,fopen 函数试图打开一个不存在的文件,如果失败,它将设置 errno 并使用 perror 函数输出错误信息。通过 fprintf(stderr, "Error code: %d\n", errno) 输出具体的错误码,以便进一步调试。

要注意,每个线程都有自己的 errno,因此在多线程环境中需要小心处理。此外,不是所有的标准库函数都会设置 errno,有些函数可能会通过其他方式报告错误。


转载请注明出处:http://www.zyzy.cn/article/detail/3201/C语言