readdir API尝试读取大于2 GB的文件

时间:2015-10-14 05:40:04

标签: c linux

我是Linux API编程的新手。我正在尝试实现一个错误方案,其中32位readdir()API正在尝试读取大于2 GB的文件。

这是方案

  1. 在大于2 GB的大文件上调用32位readdir API。
  2. 32位readdir API尝试读取大于2 GB的文件时引发的错误消息是什么。它是EOVERFLOW吗?

    readdir的dirent返回值是多少?是NULL吗?

    int i;
    FILE *fp;
    DIR *dir;
    struct dirent *dirp;
    int errno;
    
    dir=opendir("/home/tmp-dir"); ==> which has large files greater than 2GB 
    for(i=1;i<=15;i++)
    {
        errno = 0;
        dirp=readdir(dir);
        printf(" File name = %s   Error Number = %s \n", dirp->d_name, 
              strerror(errno) );
    
        if (errno!= EOVERFLOW )
        {
            printf("**readdir:  readdir() set errno to %d (%s)  Expected 
            EOVERFLOW  (%d) \n", errno, strerror(errno), 
            EOVERFLOW );
    
        }
    
    }
    
    closedir(dir);
    return (0);
    }
    

    我在想32位readdir API在尝试读取大于2 GB的文件时会显示EOVERFLOW。请纠正我的理解

1 个答案:

答案 0 :(得分:1)

readdir无法读取文件。你的问题的前提是错误的。