博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在32位系统中使用fseek和lseek或fwrite、write写大文件时,最大只能写2G左右的解决办法
阅读量:4041 次
发布时间:2019-05-24

本文共 270 字,大约阅读时间需要 1 分钟。

我在32位linux系统下,用fwrite写文件时,发现最大只能写2G的文件。

原因是在用fwrite时,系统会用到fseek定位当前文件的位置,在32位系统中,最大只能定位到0x7FFFFFFF(fseek返回的是有符号整型的),所以文件大小有了限制。

解决办法是在编译时加上-D_FILE_OFFSET_BITS=64。

即:

gcc -Wall -g -D_FILE_OFFSET_BITS=64 seek.c   -o seek。

网上说在文件中定义:#define   _FILE_OFFSET_BITS 64

经过我的试验,是没有用的。

转载地址:http://apldi.baihongyu.com/

你可能感兴趣的文章
设计模式(10) - Facade外观模式
查看>>
设计模式(11) - Proxy代理模式
查看>>
设计模式(12) - Template模板方法模式
查看>>
设计模式(13) - Strategy策略模式
查看>>
设计模式(14) - State状态模式
查看>>
设计模式(15) - Observer观察者模式
查看>>
设计模式(18) - Command命令模式
查看>>
Fedora16/RedHat6.4下配置samba
查看>>
C++中const对象引用做为形参
查看>>
C++11使用lambda操作std::map
查看>>
VMware下Linux以NAT方式上网
查看>>
RHEL6.4编译安装gcc4.8.1
查看>>
C++11线程指南(1)--创建线程
查看>>
C++11线程指南(2)--Lambda线程实现
查看>>
C++11线程指南(3)--右值与左值
查看>>
C++11线程指南(4)--右值引用与移动语义
查看>>
C++11线程指南(5)--线程的移动语义实现
查看>>
C++11线程指南(6)--共享内存与互斥
查看>>
C++11线程指南(7)--资源竞争条件
查看>>
C++11线程指南(8)--死锁
查看>>