2015-10-14 122 views
1

我是Linux API編程的新手。我試圖實現一個錯誤情況,其中32位readdir()API試圖讀取大於2 GB的文件。readdir嘗試讀取大於2 GB的文件的API

這裏是一個大的文件,該文件是大於2 GB的方案

  1. 調用32位READDIR API。

當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); 
} 

我在想讀取大於2 GB的文件時,32位readdir API將顯示EOVERFLOW。請糾正我的理解

回答

2

readdir不讀取文件。你的問題的前提是錯誤的。

相關問題