opendir
是 Linux 系统中用于打开目录的函数(注意:不是 copendir
,可能是拼写错误),当它失败时会返回 NULL 并设置 errno。以下是常见的错误处理方法:
目录不存在 (ENOENT)
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
if (errno == ENOENT) {
perror("Directory does not exist");
// 创建目录或提示用户
}
}
权限不足 (EACCES)
if (dir == NULL && errno == EACCES) {
perror("Permission denied");
// 提示用户需要更高权限或更改目录权限
}
路径不是目录 (ENOTDIR)
if (dir == NULL && errno == ENOTDIR) {
perror("Path is not a directory");
// 检查路径是否正确
}
内存不足 (ENOMEM)
if (dir == NULL && errno == ENOMEM) {
perror("Insufficient memory");
// 释放资源或终止程序
}
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
void process_directory(const char *path) {
DIR *dir = opendir(path);
if (dir == NULL) {
fprintf(stderr, "Error opening directory '%s': %s\n",
path, strerror(errno));
switch(errno) {
case EACCES:
// 处理权限问题
break;
case ENOENT:
// 处理目录不存在
break;
case ENOTDIR:
// 处理路径不是目录
break;
case ENOMEM:
// 处理内存不足
break;
default:
// 其他错误
break;
}
return;
}
// 成功打开目录后的处理代码
// ...
closedir(dir);
}
opendir
失败时返回 NULLclosedir
释放资源readdir
- 读取目录内容closedir
- 关闭目录rewinddir
- 重置目录流dirfd
- 获取目录文件描述符希望这些信息能帮助您正确处理 Linux 目录操作中的错误情况。