在C
中,以递归方式遍历LINUX环境中的文件和目录
我的函数foo
有效,除非该目录中包含文件(我的函数IS指向列出当前DIR的所有文件)。
自
以来,它不会打印任何目录中的文件if((err=stat(full_child_entity_path,childStat)) <0)
失败。我好几天都遇到了这个问题。任何人都可以尝试解释为什么这个功能 失败了?
注意:我拥有所有文件和目录的完全访问权限,文件/目录拥有完全权限。
先谢谢!
int foo(char* dir_location)
{
if((err=stat(full_child_entity_path,childStat)) <0)
{
printf("Some sort of error with getting file stat %d <%s>\n",err,childDirent->d_name);
}
opendir()
while {readdir()!=null}
if(strcmp(childDirent->d_name,".")==0 || strcmp(childDirent->d_name,"..")==0) continue;
if(S_ISREG(childStat->st_mode)) printf("name of file");
else if(S_ISDIR(childStat->st_mode)) foo("concatinate dir_location+"/"+childDirent->name);
}
答案 0 :(得分:1)
我认为这是因为你忽略了函数readdir()
的返回值(除了空值检查)。它实际上会返回您稍后引用的孩子dirent
。其次,您还会忽略opendir()
的返回值,它会为您提供成功调用readdir(...)
的目录。