在32位系统中使用fseek和lseek或fwrite、write写大文件时,最大只能写2G左右的解决办法
2014-07-07 15:29
337 查看
我在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
经过我的试验,是没有用的。
原因是在用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
经过我的试验,是没有用的。
相关文章推荐
- 64位系统使用Access 数据库文件遇到的错误和解决办法
- Mariadb配置文件不生效最大连接数只能为214的解决办法
- EXCEL 数据驱动 只能在 32位下面使用,在64位下面就会报错 解决办法
- VS2013中 勾选在共享DLL中使用MFC 报错 系统找不到指定文件 参考解决办法
- VirtualBox或VM Ware只能安装32位系统的解决办法
- mini2440使用nfs挂载跟文件系统失败的解决办法
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- IIS出现“另一个程序正在使用此文件,进程无法访问。”错误提示的解决办法
- 使用用Ghost制作的win2k3和winxp文件具有相同的SID的解决办法
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- 系统提示无法删除文件或文件夹的常用解决办法
- 使用VMware中主机和虚拟机不能互相复制文件的彻底解决办法
- 关于“使用xmlspy编写xsl文件时候,在xsl解释xml文件的时候总是使用utf-16编码”的解决办法
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- Ubuntu7.04使用totem-xine,安装libxine1-ffmpeg后,rm文件播放无声问题的解决办法
- 解决Java读取properties文件的中文问题的新办法(不使用native2ascii.exe及其他工具)
- 错误编辑RedHat profile文件导致系统不能登录的解决办法
- 使用了博客园的备份后得到一个xml文件,不知道有没有css或者xslt文件可以在本地阅读文章,在网上找了半天也没有找到解决办法,难道要自己写?