在C中读取目录文件

Gui*_*ido 3 c unix linux filesystems

我正在尝试编写一个小程序来向我展示linux中目录的内部表示(特别是debian).这个想法是一个使用open(".",O_RDONLY)的小型C程序,但这似乎没有输出.该计划如下:

#include <stdio.h>
#include <fcntl.h>

int main(int argc, char** argv)
{
        int fd = open(argv[1],O_RDONLY,0 );
        char buf;

        printf("%i\n",fd);

        while(read(fd, &buf, 1) > 0)

                printf("%x ", buf);


        putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)

当我在常规文件上运行它时,它按预期工作,但在诸如"."的目录上,它没有输出.fd的值为3(如预期的那样),但对read的调用返回-1.

为什么这不起作用,我怎么能实现阅读内部表示?

谢谢!

Dar*_*ust 7

对于处理目录,您需要使用opendir/ readdir/ closedir.阅读相应的手册页以获取更多信息.

要检查文件名是否对应于目录,首先需要调用stat文件名并检查它是否是目录(S_ISDIR(myStatStruc.st_mode)).