【发布时间】:2009-04-08 16:09:38
【问题描述】:
我有一个简短的 C 程序,它会写入文件直到磁盘上没有更多空间:
#include <stdio.h>
int main(void) {
char c[] = "abcdefghij";
size_t rez;
FILE *f = fopen("filldisk.dat", "wb");
while (1) {
rez = fwrite(c, 1, sizeof(c), f);
if (!rez) break;
}
fclose(f);
return 0;
}
当我运行程序时(在 Linux 中),当文件达到 2GB 时它会停止。
由于 FILE 结构或其他原因,是否存在内部限制?
谢谢。
【问题讨论】:
-
这听起来像是 32 位整数的正 1/2。
-
你的硬盘格式化成哪个文件系统?
-
Linux 说“vfat”,我认为是 FAT32。它是一个 4GB 的闪存驱动器,最初(几乎)是空的。
-
vfat (FAT32) 对每个文件都有 2GB 的限制,不管你用什么来编码。
-
support.microsoft.com/kb/314463 XP 的 FAT 文件大小限制为 4GB-1B。我以为 Linux 的 vfat 会限制在 2GB,但现在阅读源代码我想我错了。
标签: c filesystems fwrite fat32