Skip to content

overview

不能读取目录的话, 也算是残废一个了吧?


目录读取, 读取的是文件名. 但是文件名有长有短, 为了支持所有的文件名, 我们使用 柔性数组 1

1
2
3
4
5
6
7
typedef struct dirent
{
    int idx;
    size_t siz;
    size_t len;
    char name[];
} dir_t;

1
2
3
4
5
ssize_t readdir (
    int fd,    // dir fd
    void *buf, // dir_t *
    size_t mx  // buf siz
    );

每一次都尽量的读取目录, 在缓冲区足够大的情况下.

我们在 read 内部支持读取目录

if (file->flgs & O_DIRECTORY)
    return readdir(fd, buf, cnt);

experiment

  • app/ls.c