如果文件大小超过文件系统的最大大小,会发生什么?

时间:2017-09-14 05:35:35

标签: linux unix filesystems partition

例如,在FAT32分区中,最大文件大小为4GB。但是我能够用vim创建一个5GB的文件,然后我保存了文件并再次打开它,控制台输出就像楼梯一样被打破了。我有三个问题。

  1. 如果文件大小超过文件系统的最大大小,会发生什么?

  2. 在我的情况下,为什么要打破?

  3. 在Unix系统调用中,stat()最多可以达到2GB(2 ^ 31 - 1)。这与文件系统有什么关系吗? stat()中的数据限制与文件系统中每个功能的限制之间是否存在关系?

1 个答案:

答案 0 :(得分:1)

  

如果文件大小超过文件系统的最大大小,会发生什么?

根据定义,这种情况永远不会发生。真正发生的是一些系统调用(可能是write(2) ...)失败了,执行该操作的代码应该处理这种情况。

请注意,FAT32文件系统将文件的最大大小限制为2千兆字节。如果您想要更多(或file system大文件在较小的块中,然后将它们复制到FAT32格式的USB密钥),请在USB密钥上使用更好的split(1)

如果使用<stdio.h>通知fflush(3)fprintf(3)fclose(3)(以及大多数其他标准功能)可能会失败(例如,因为他们会失败{{3} })。

  

控制台输出像楼梯一样被打破

可能是因为你的write(2)处于某种破碎状态。请参阅pseudoterminalstty(1)reset(1)并阅读termios(3)

  

在Unix系统调用中,stat()最多可以达到2GB(2 ^ 31 - 1)

你误解了tty demystified。再读一遍其文档

阅读stat(2),然后Advanced Linux Programming

  

我能够使用vim

创建一个5GB的文件

要了解syscalls(2)首先阅读其文档的行为,然后研究其源代码(vim,您可以并且可能应该研究其代码)。

您还可以使用free software来了解某些命令或进程执行的系统调用。