解决Linux中在创建大于4g文件时遇到的File Size Limit Exceeded问题

本文介绍了在Linux系统中遇到文件大小超过4GB限制的问题,并提供了解决方案。通过在GCC编译时添加特定标志-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64,可以调整offset_t大小,使得系统支持创建更大的文件。同时,文中还提供了一个用于测试的C语言程序write_bigfile.c,展示了如何在代码中应用这些编译标志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在解决在PMC开发板上挂着NTFS磁盘分区,创建大于4G文件时老在文件到达2G时出现以下错误:

File Size Limit Exceeded

于是在我的Fedora 9虚拟机上上用gcc编译程序进行测试,还是遇到同样的问题。通过命令”ulimit -f“发现是没有限制的,当山感觉到可能是我的程序出了问题。于是在网上google和百度了一番。

终于发现了问题所在:

我们通常的linux系统,offset_t的大小为32,通过程序创建的话,系统不支持大于2G的文件。

 

解决方法:

 

编译时加上-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 即可。目的是用于调整offset_t的大小,由于的32位INT变成64位。

 

如下所示:

[root@localhost programs]# gcc -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -o write_bigfile write_bigfile.c

 

在这过程中了解学习了ulimit命令的用途:于shell启动进程所占用的资源。

同样,如果要跑到嵌入式平台,只需用进行交叉编译即可。  

 

附上write_bigfile.c的代码:

 

当你在使用Yii框架进行数据导出操作,如果遇到'File size limit exceeded'错误,可以参考这篇资料《32位系统File size limit exceeded问题:xdebug日志解决方案》进行解决。由于32位系统的文件大小限制为2GB,你的PHP脚本在导出大量数据可能因此而受限。 参考资源链接:[32位系统File size limit exceeded问题:xdebug日志解决方案](https://wenku.youkuaiyun.com/doc/6412b52dbe7fbd1778d42375?spm=1055.2569.3001.10343) 首先,你需要确认错误确实是由文件大小限制引起的。可以通过查看错误日志或使用错误处理语句来诊断问题。例如,在PHP中,可以使用`ini_get('upload_max_filesize')`和`ini_get('post_max_size')`来获取当前设置的最大上传文件大小。 如果确定问题是由于xdebug记录文件过大造成的,可以尝试临关闭xdebug扩展来绕过大小限制。这可以通过在PHP配置文件`php.ini`中设置`zend_extension=xdebug.so`为注释或完全删除这一行来实现。之后需要重启Web服务器使配置生效。 然而,临禁用xdebug可能不是长久之计。你可能需要考虑升级服务器硬件到64位系统,或者优化你的数据导出逻辑,比如分批导出数据来避免单一文件过大。 此外,确保你的应用代码没有不必要的日志记录,尤其是开启xdebug,因为它会生成大量的性能数据文件,这些文件会消耗大量磁盘空间。定期清理无用的日志文件也是个好习惯。 在完成这些步骤后,你应该可以解决'File size limit exceeded'的问题,并继续使用Yii框架进行数据导出。为了获得更深入的理解,你可以继续研究《32位系统File size limit exceeded问题:xdebug日志解决方案》这篇资料,它提供了详细的案例分析和解决方案,帮助你在今后遇到类似问题能够更加从容应对。 参考资源链接:[32位系统File size limit exceeded问题:xdebug日志解决方案](https://wenku.youkuaiyun.com/doc/6412b52dbe7fbd1778d42375?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值