• Linux C 下的大文件操作


    这里说的大文件指大小超过4G的文件。

    在32位环境下,linux默认打开、读、写超过4G的文件会返回错误。定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效。

    注意它必须定义在所有头文件之前。

    #ifndef _FILE_OFFSET_BITS

    #define _FILE_OFFSET_BITS 64

    #endif

     

    或者在编译时添加如下参数:

    -D_FILE_OFFSET_BITS=64-D_LARGEFILE_SOURCE 

    或者使用函数fopen64,但是该函数我的测试机上没有找到相关的说明,所以在我这里不可用。

    _FILE_OFFSET_BITS的定义简单来说就是在32位机器上,使用64位的变量空间,长度增加了一倍。新的int就相当于原来的long int,这样就可以控制大于4G的文件了。

    在大文件打开后,即可使用文件操作函数为所欲为了。 

    比较高级的用法:

    Mmap方式,即内存映射的方法,简单说就是将文件分成片段,然后逐片的读到内存中并操作。

    优点是性能很好,处理大文件的速度很快。

    缺点是需要进程锁来锁住进程,并且需要保留每次操作的位置,用来下一次的操作。实现起来比较复杂,感兴趣的同学可以参考:

    http://www.libing.net.cn/read.php/1252.htm

    http://hi.baidu.com/vcprogrammer/blog/item/da863f4ff5533137aec3abec.html

  • 相关阅读:
    U盘支持启动windows和Linux
    emacs安装
    npm 安装指定的第三方包
    npm安装第三方包
    npm 安装淘宝镜像
    ssm 环境搭建
    gitBook安装简介
    git 博客搭建
    git 多人开发
    git ssh提交
  • 原文地址:https://www.cnblogs.com/anzhsoft/p/3602974.html
Copyright © 2020-2023  润新知