我是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/