我有这个家庭作业,我必须使用bittorrent算法将一个非常大的文件从一个源传输到多个机器。最初我将文件切割成块,然后将块传输到所有目标。目标具有分享他们与其他目标的块的智能。它工作正常。我想传输一个4GB的文件,所以我把四个1GB的文件。当我创建4GB tar文件时没有出错,但在另一端将所有块组装回原始文件时,它错误地说超出了文件大小限制。我怎样才能解决这个2GB限制问题?
答案 0 :(得分:11)
我可以想到两个可能的原因:
gcc -D_FILE_OFFSET_BITS=64
)答案 1 :(得分:4)
这取决于filesystem type。使用ext3时,我对没有明显更大的文件没有这样的问题。
如果底层磁盘是FAT,NTFS或CIFS(SMB),则还必须确保使用相应驱动程序的最新版本。有一些较旧的驱动程序具有与您遇到的文件大小限制相同的文件大小限制。
答案 2 :(得分:3)
这可能与system limitation configuration相关吗?
$ ulimit -a
vi /etc/security/limits.conf
vivek hard fsize 1024000
如果您不希望任何限制,请从fsize
删除/etc/security/limits.conf
。
答案 3 :(得分:1)
如果您的系统支持它,您可以获得提示:man largefile
。
答案 4 :(得分:1)
您应该使用fseeko和ftello,请参阅fseeko(3)
请注意,您应该定义#define _FILE_OFFSET_BITS 64
#define _FILE_OFFSET_BITS 64
#include <stdio.h>