以下是 <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语言