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');
}
当我在常规文件上运行它时,它按预期工作,但在诸如"."的目录上,它没有输出.fd的值为3(如预期的那样),但对read的调用返回-1.
为什么这不起作用,我怎么能实现阅读内部表示?
谢谢!
对于处理目录,您需要使用opendir/ readdir/ closedir.阅读相应的手册页以获取更多信息.
要检查文件名是否对应于目录,首先需要调用stat文件名并检查它是否是目录(S_ISDIR(myStatStruc.st_mode)).