例如,在FAT32分区中,最大文件大小为4GB。但是我能够用vim创建一个5GB的文件,然后我保存了文件并再次打开它,控制台输出就像楼梯一样被打破了。我有三个问题。
如果文件大小超过文件系统的最大大小,会发生什么?
在我的情况下,为什么要打破?
在Unix系统调用中,stat()最多可以达到2GB(2 ^ 31 - 1)。这与文件系统有什么关系吗? stat()中的数据限制与文件系统中每个功能的限制之间是否存在关系?
答案 0 :(得分:1)
如果文件大小超过文件系统的最大大小,会发生什么?
根据定义,这种情况永远不会发生。真正发生的是一些系统调用(可能是write(2) ...)失败了,执行该操作的代码应该处理这种情况。
请注意,FAT32文件系统将文件的最大大小限制为2千兆字节。如果您想要更多(或file system大文件在较小的块中,然后将它们复制到FAT32格式的USB密钥),请在USB密钥上使用更好的split(1)。
如果使用<stdio.h>
通知fflush(3),fprintf(3),fclose(3)(以及大多数其他标准功能)可能会失败(例如,因为他们会失败{{3} })。
控制台输出像楼梯一样被打破
可能是因为你的write(2)处于某种破碎状态。请参阅pseudoterminal,stty(1),reset(1)并阅读termios(3)。
在Unix系统调用中,stat()最多可以达到2GB(2 ^ 31 - 1)
你误解了tty demystified。再读一遍其文档
阅读stat(2),然后Advanced Linux Programming。
我能够使用
创建一个5GB的文件vim
要了解syscalls(2)首先阅读其文档的行为,然后研究其源代码(vim,您可以并且可能应该研究其代码)。
您还可以使用free software来了解某些命令或进程执行的系统调用。