在 Debian(以及所有 Linux/Unix 系统) 中,opendir() 是 C 语言 中用于打开目录的函数,属于 <dirent.h> 头文件,常用于遍历目录。
下面给你一个完整、实用的说明。
#include <dirent.h>
DIR *opendir(const char *name);
name:要打开的目录路径(如 "/home/user" 或 ".")DIR * 指针(目录流)NULL,并设置 errno| 函数 | 作用 |
|---|---|
opendir() |
打开目录 |
readdir() |
读取目录项 |
closedir() |
关闭目录 |
errno |
错误信息 |
#include <stdio.h>
#include <dirent.h>
int main(int argc, char *argv[]) {
DIR *dir;
struct dirent *entry;
if (argc < 2) {
fprintf(stderr, "用法: %s <目录>\n", argv[0]);
return 1;
}
dir = opendir(argv[1]);
if (dir == NULL) {
perror("opendir");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc listdir.c -o listdir
./listdir /etc
opendir("/not/exist");
返回 NULL,errno = ENOENT
sudo chmod 000 /root
opendir("/root") → Permission denied
open() 有什么区别?open():打开文件opendir():打开目录❌ 不能,只能读目录项(文件名)
✅ 可以,本质一样
ls
import os
os.listdir(".")
如果你愿意,可以告诉我:
我可以直接给你对应代码。