stat函数返回空结构

时间:2015-03-28 23:38:31

标签: c file directory stat

studentsDir = opendir(lineValues);
while ((entry = readdir(studentsDir)) != NULL) {
    stat(path, &dirData);
    if (S_ISDIR(dirData.st_mode) && (entry->d_name[0] != '.')
            && (entry->d_name[1] != '.')) {

我在目录中搜索文件夹。问题是stat返回大多数文件夹的空值dirdata

1 个答案:

答案 0 :(得分:0)

代码需要:

  #include <sys/types.h>
  #include <sys/stat.h>
  #include <unistd.h>

该功能的原型是:

  int stat(const char *path, struct stat *buf);

所以你还需要:

struct stat dirData;

并且* path变量需要是文件名的实际路径(可以是相对的或绝对的)到目标文件。

发布的代码中没有任何内容表明代码中已包含上述任何内容。

和&#39;条目&#39;是指向&#39; struct dirent&#39;当前文件/目录名称需要附加到&#39;路径&#39;在stat()使用它之前。

&#39;条目&#39;需要检查以确保在使用它之前它不是NULL。

struct dirent包含将包含的d_name [256]字段 当前文件(或目录)的名称(但不是整个路径) 所以每次代码进入(子)目录, (发布的代码没有做) 那么路径需要有来自d_name []的字符串 附加到路径字符串