我是Linux API编程的新手。我正在尝试实现一个错误方案,其中32位readdir()API正在尝试读取大于2 GB的文件。
这是方案
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。请纠正我的理解
答案 0 :(得分:1)
readdir
无法读取文件。你的问题的前提是错误的。