我有一个作业,需要使用类似比特流的算法将一个非常大的文件从一个源传输到多台机器。最初,我将文件分成块,并将这些块传输到所有目标。目标有智能性,可以与其他目标共享它们拥有的块。这个方法运行良好。我想传输一个4GB的文件,所以我压缩了四个1GB的文件。当我创建4GB的tar文件时没有出错,但在另一端将所有块组装回原始文件时,出现了“文件大小限制超过”的错误。如何解决这个2GB的限制问题?
gcc -D_FILE_OFFSET_BITS=64
)_FILE_OFFSET_BITS
将O_LARGEFILE
传递给open
系统调用,但为了可移植性,建议使用_FILE_OFFSET_BITS
:https://dev59.com/oHE85IYBdhLWcg3wNgvk - Ciro Santilli OurBigBook.com这可能与系统限制配置有关吗?
$ ulimit -a
vi /etc/security/limits.conf
vivek hard fsize 1024000
/etc/security/limits.conf
中删除fsize
。你应该使用fseeko和ftello,参见fseeko(3)
请注意,你应该定义#define _FILE_OFFSET_BITS 64
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
man largefile
。