readdir()问题

时间:2011-07-11 05:02:39

标签: c linux readdir

我的目的是以深度优先的方式读取以作为输入给出的目录的每个目录和文件,然后向我写入一部分(非常非常初始的)代码,如下所示。

int main()
{

 DIR *fd_dir;
 struct dirent *s_dirent;
 struct stat buff;
 char str[100];

 fd_dir = opendir("/home/juggler");
 if(fd_dir == 0)
    printf("Error opening directory");

 while((s_dirent = readdir(fd_dir)) != NULL)
 {
    printf("\n Name %s",s_dirent->d_name);

 } 
 closedir(fd_dir);
}

现在,目录juggler有3个目录,比如A,B和C,但是这个程序的输出不仅给出了这三个目录,还给出了.mozilla .zshrc .gvfs .local .bash_history等我打开juggler时看不到的一般。

在变戏法者里面这些额外的东西是什么?我怎么不读它们

由于

1 个答案:

答案 0 :(得分:2)

在Unix世界中,要隐藏文件,请将第一个字符设为.。因此,当您只在目录中ls时,您看不到它们。您必须使用ls -als -A来查看它们。

你不能“忽视它们”。您可以检查循环以查看第一个字符是.还是continue

if ('.' == s_dirent->d_name[0]) {
    continue;
}

但请记住,他们都是平等的公民。 所以没有理由跳过它们。您可能希望跳过的是特殊文件.(当前目录)和..(父目录)。