用Linux编写C或C++语言程序,实现:“/root”路径和“/home”路径下目录树的遍历
时间: 2023-09-19 18:07:04 浏览: 144
C++ 遍历目录的代码实现
4星 · 用户满意度95%
好的,我可以为您提供一个基于C语言的程序示例,用于遍历/root和/home路径下的目录树。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
void traverse(char *path) {
DIR *dir;
struct dirent *entry;
struct stat info;
if (!(dir = opendir(path))) {
perror("opendir error");
return;
}
while ((entry = readdir(dir)) != NULL) {
char new_path[1024];
snprintf(new_path, sizeof(new_path), "%s/%s", path, entry->d_name);
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
if (lstat(new_path, &info) == -1) {
perror("lstat error");
continue;
}
if (S_ISDIR(info.st_mode)) {
printf("%s\n", new_path);
traverse(new_path);
}
}
closedir(dir);
}
int main() {
char *root_path = "/root";
char *home_path = "/home";
printf("Traversing %s:\n", root_path);
traverse(root_path);
printf("Traversing %s:\n", home_path);
traverse(home_path);
return 0;
}
```
这个程序使用了递归的方式遍历目录树。首先打开指定的目录,然后读取目录中的每一个条目,如果是目录,则递归调用自身,直到遍历完整个目录树。遍历时打印出每个目录的路径,以便查看程序的执行情况。
注意,这个程序需要以root权限运行,否则可能无法访问/root目录。同时,也需要确保指定的目录存在,并且程序应该处理可能出现的错误情况。
阅读全文