[原创] linux 平台大文件存储的实现(大于2G)

37°男人   2015-11-23 14:30 楼主
在编译程序的时候,设置文件偏移量,接口以处理文件偏移量:一组使用32 位文件偏移量,另一组则使用64位文件偏移量



要点是编译时候加-D_FILE_OFFSET_BITS=64宏


编译方法:

#!/bin/sh
arm-hisiv300-linux-gcc -D_FILE_OFFSET_BITS=64 main.c -o target
gcc -D_FILE_OFFSET_BITS=64 main.c -o target


源程序:

#include
#include
#include
#include
#include

#define FILENAME            "test.raw"
#define WRITEBUFSIZE        (1024*1024)


int main()
{
    printf("sizeof(size_t) %d, sizeof(off_t) %d\n", sizeof(size_t), sizeof(off_t));
    FILE *stream = fopen(FILENAME, "wb");
    if(!stream)
    {
        perror("fopen:");
        return -1;   
    }

    int ret = 0;
    char writebuf[WRITEBUFSIZE];
    int i = 0;

    for(i = 0;i < 6000;i++)
    {
        ret = fwrite(writebuf, WRITEBUFSIZE, 1, stream);
        if(ret != 1)
        {
            printf("fwrite error\n");
        }
    }

    fclose(stream);

    return 0;
}




邮箱:ternence.hsu@foxmail.com

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复