打开大文件

时间:2018-07-31 16:14:23

标签: c gcc embedded-linux

我正在尝试在嵌入式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,这意味着“没有此类文件或目录”

有人知道为什么吗? 问候

1 个答案:

答案 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");

文件具有文件的所有内容;