在Ubuntu中,使用C++编写的程序可以通过readdir()
函数来读取目录内容。为了实现错误处理,你需要检查readdir()
函数的返回值。当readdir()
遇到错误时,它会返回NULL指针。
以下是一个简单的示例,展示了如何在Ubuntu中使用C++和readdir()
函数进行错误处理:
#include <iostream>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main() {
DIR *dir;
struct dirent *entry;
// 打开目录
dir = opendir("/path/to/directory");
if (dir == NULL) {
std::cerr << "Error: Cannot open directory." << std::endl;
return 1;
}
// 读取目录内容
while ((entry = readdir(dir)) != NULL) {
std::cout << "Entry name: " << entry->d_name << std::endl;
}
// 检查readdir()是否因错误而返回NULL
if (errno != 0) {
std::cerr << "Error: Failed to read directory." << std::endl;
closedir(dir);
return 1;
}
// 关闭目录
closedir(dir);
return 0;
}
在这个示例中,我们首先使用opendir()
函数打开一个目录。如果opendir()
返回NULL,说明打开目录时发生了错误,我们将输出错误信息并返回1。
接下来,我们使用readdir()
函数读取目录内容。如果readdir()
返回NULL,我们需要检查errno
变量以确定是否发生了错误。如果errno
不为0,说明读取目录时发生了错误,我们将输出错误信息、关闭目录并返回1。
最后,如果一切正常,我们将关闭目录并返回0。