我是Linux API编程新手。我试图实现一个错误场景,其中32位readDir()API试图读取大于2 GB的文件。
下面是场景
对大于2 GB的大文件调用32位readdir API。
当32位readdir api试图读取大于2GB的文件时,抛出的错误消息是什么?是不是有溢流?
readdir的dirent返回值是多少?它是空的吗?是吗?

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试图读取大于2GB的文件时,它将显示eoverflow。请纠正我的理解

最佳答案

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

关于c - readdir API尝试读取大于2 GB的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33117394/

10-15 05:16