在 Ubuntu(Linux)里,copendir 并不是标准函数,你可能想问的是 opendir / readdir / closedir 这一套目录操作函数。下面我按 最常见用法 给你讲清楚。
opendir#include <dirent.h>
DIR *opendir(const char *name);
打开一个目录,返回一个 DIR* 目录流指针。
| 函数 | 作用 |
|---|---|
opendir |
打开目录 |
readdir |
读取目录项 |
closedir |
关闭目录 |
#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
struct dirent {
ino_t d_ino;
off_t d_off;
unsigned short d_reclen;
unsigned char d_type;
char d_name[256];
};
常用:
d_name:文件名d_type:文件类型(需要判断时)#include <sys/stat.h>
if (entry->d_type == DT_REG) {
printf("普通文件: %s\n", entry->d_name);
} else if (entry->d_type == DT_DIR) {
printf("目录: %s\n", entry->d_name);
}
⚠️ 注意:某些文件系统 d_type 可能不可靠,这时要用 stat()。
copendir 这个系统调用✅ 正确是 opendir
那不是 copendir,而是:
opendir + readdir + mkdir + cpcp -r src dst
Ubuntu 下没有
copendir,目录操作用的是opendir / readdir / closedir,用于遍历目录。
如果你是想 复制目录、递归遍历目录,或 写某个具体程序,可以直接把需求贴出来,我可以帮你写完整代码。