我正在尝试在嵌入式Linux发行版上打开一个大文件(> 5GB)。 从外壳中,我发现它具有所有权限:
-rwxrwxrwx 1 root pi 5368709120 Mar 20 23:36 5GB.bin
我的代码很简单:
int file;
file = open(frb_man_r.frb_path, O_LARGEFILE);
if(file == -1)
return errno;
我在其他stackoverflow帖子和网络上都发现了几个主题,详细解释了如何管理> 32位文件,特别是与LFS相关的页面here
所以我在源代码中添加了以下定义:
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
此外,我在我的项目(这是一个库)和所有其他相关项目上添加了此宏:_FILE_OFFSET_BITS=64
现在,不幸的是,我的公开通话结果导致errno = 2,这意味着“没有此类文件或目录”
有人知道为什么吗? 问候
答案 0 :(得分:0)
当您将文件声明为int时,您是在要求操作系统为您提供静态内存和平。 尝试使用指针,并使用FILE。
这就是我在gcc中使用I / O的方式,我将文件> 30GB用于FILE,所以我知道它可以正常工作
sintax:
FILE *file;
file = fopen(frb_man_r.frb_path,"r");
if(file == NULL)
printf("no memory or no file");
文件具有文件的所有内容;