在 Ubuntu(Linux)里,opendir 不是“使用命令”,而是 C 语言里的一个系统调用函数,用来打开目录并配合 readdir 读取目录内容。
下面分几种情况说明,你可以看看你到底想用哪一种。
opendiropendir 是什么?#include <dirent.h>
DIR *opendir(const char *name);
DIR* 目录流指针NULL#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir("."); // 打开当前目录
if (dir == NULL) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc test.c -o test
./test
| 函数 | 作用 |
|---|---|
opendir |
打开目录 |
readdir |
读取目录项 |
closedir |
关闭目录 |
rewinddir |
重新定位到目录开头 |
那 不需要 opendir,直接用命令:
ls
ls -l
ls -a
可以用 for:
for f in *; do
echo "$f"
done
closedir(dir); // 必须要
if (opendir("not_exist") == NULL) {
perror("opendir");
}
opendir 当命令用$ opendir . ❌ 错误
可以用 opendir,也可以用更现代的:
#include <filesystem>
namespace fs = std::filesystem;
for (auto &p : fs::directory_iterator(".")) {
std::cout << p.path() << std::endl;
}
opendir是 C 语言里用来打开目录的函数,不是 Ubuntu 命令。
如果你愿意,可以告诉我:
我可以直接给你完整代码。