1

我的意图是以深度优先的方式读取作为输入给定目录的每个目录和文件,并且为此我编写了一部分(非常初始)代码,如下所示。

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 时看不到这些。

juggler 里面的这些额外的东西是什么,我怎么不读它们

谢谢

4

1 回答 1

2

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

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

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

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

于 2011-07-11T05:06:17.403 回答