当前位置: 技术问答>linux和unix
文件的最大偏移量问题
来源: 互联网 发布时间:2016-07-11
本文导语: 请问Linux下creat一个普通文件,文件的最大偏移量是多大啊!能不能通过修改某些内容来修改最大偏移量啊! | 因为lseek使用的偏移量是用off_t类型表示的,所以允许具体实现根据各自特定的平台自行 选择...
请问Linux下creat一个普通文件,文件的最大偏移量是多大啊!能不能通过修改某些内容来修改最大偏移量啊!
|
因为lseek使用的偏移量是用off_t类型表示的,所以允许具体实现根据各自特定的平台自行
选择大小合适的数据类型。现今大多数平台提供两组接口以处理文件偏移量:一组使用32
位文件偏移量,另一组则使用64位文件偏移量。
Single UNIX
Specification向应用程序提供了一种方法,使其通过sysconf函数确定何种环境受到支持(见
2.5.4节)。表3-1总结了定义的sysconf常量。
-------------------------------------------------------------------------------
|Name of option |Description |name argument |
| | | |
|_POSIX_V6_ILP32_OFF32 |int, long, pointer, and off_t |_SC_V6_ILP32_OFF32 |
| |types are 32 bits. | |
| | | |
|_POSIX_V6_ILP32_OFFBIG |int, long, and pointer types |_SC_V6_ILP32_OFFBIG |
| |are 32 bits; off_t types are | |
| |at least 64 bits. | |
| | | |
|_POSIX_V6_LP64_OFF64 |int types are 32 bits; long, |_SC_V6_LP64_OFF64 |
| |pointer, and off_t types are | |
| |64 bits. | |
| | | |
|_POSIX_V6_LP64_OFFBIG |int types are 32 bits; long, |_SC_V6_LP64_OFFBIG |
| |pointer, and off_t types are | |
| |at least 64 bits. | |
-------------------------------------------------------------------------------
c99编译器要求使用getconf(1)命令,将所希望的数据大小模型映射为编译和连接程序所需的
标志。根据每个平台支持环境的不同,可能需要不同的标志和库。
不幸的是,在这一方面,实现没有跟上标准的步伐。使人更迷惑不解的是Single UNIX
Specification第2版和第3版之间更改了若干个名字。
为了避开这一点,应用程序可将符号常量_FILE_OFFSET_BITS设置为64,以支持64位偏移量。
这样处理后就将off_t定义更改为64位带符号整型。将_FILE_OFFSET_BITS符号常量设置为32
,就支持32位文件偏移量。但是,应当知道的是:虽然本书讨论的四种平台都支持32位和
64位文件偏移量,其方法是将_FILE_OFFSET_BITS符号常量设置为所希望的值,但并不保证这
是可移植的。
注意:尽管可以支持64位文件偏移量,但是否能创建一个大于2 TB(231-1个字节)的文件则依
赖于底层文件系统的类型。
http://www.unix.org/version2/whatsnew/lfs20mar.html
如果在AIX或类似的平台上需要设置_LARGE_FILES
所以建议适用Autoconf来进行自动配置.
参考 mymtom
|
可以修改文件偏移量,最大偏移量依赖于文件大小,所以不能直接修改。
|
和32位还是64为的系统的有关吧
|
3楼比较专业。
我来个通俗的。他是跟具体文件系统类型有关的。比如你在fat32分区下只能创建出来2G的文件,在ntfs下就能创建出4G的文件。
同理在linux下,你在ext2分区和xfs分区上也是不一样的。
每一种类型的文件系统都有叫做superblock的东西。里面有好多东西,会影响到你的最大文件大小。比如一个文件的最大快数,块的单位,1024,还是2048,或者更大。
我来个通俗的。他是跟具体文件系统类型有关的。比如你在fat32分区下只能创建出来2G的文件,在ntfs下就能创建出4G的文件。
同理在linux下,你在ext2分区和xfs分区上也是不一样的。
每一种类型的文件系统都有叫做superblock的东西。里面有好多东西,会影响到你的最大文件大小。比如一个文件的最大快数,块的单位,1024,还是2048,或者更大。
|
你是想问 创建一个文件的的最大长度?
|
3楼讲的比较详细