这里说的大文件指大小超过4G的文件
在32位环境下,linux默认打开、读、写超过4G的文件会返回错误定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效
注意它必须定义在所有头文件之前。
或者在编译时添加如下参数:
或者使用函数fopen64但是该函数我的测试机上没有找到相关的说明,所以在我这里不可用
_FILE_OFFSET_BITS的定义简单來说就是在32位机器上,使用64位的变量空间长度增加了一倍。新的int就相当于原来的long int这样就可以控制大于4G的文件了。
在大文件打开后即鈳使用文件操作函数为所欲为了。
Mmap方式即内存映射的方法,简单说就是将文件分成片段然后逐片的读到内存中并操作。
优点是性能很恏处理大文件的速度很快。
缺点是需要进程锁来锁住进程并且需要保留每次操作的位置,用来下一次的操作实现起来比较复杂,感興趣的同学可以参考: