如何使用_FILE_OFFSET_BITS 64编译的应用程序创建一个小文件(大小< = 2GB)文件?

时间:2017-07-12 16:35:38

标签: linux posix posix-api

当使用_FILE_OFFSET_BITS 64功能测试宏编译应用程序时,所有旧的32位接口系统调用(如creat / open / lseek等)将被新的64位接口系统调用替换(如creat64 / open64) / lseek64等)。因此,我的应用程序中的creat()调用会创建一个大文件(大小> 2GB)。但是,是否可以使用使用_FILE_OFFSET_BITS 64编译的相同应用程序创建小文件(大小< = 2GB)。

2 个答案:

答案 0 :(得分:1)

  

因此,我的应用程序中的creat()调用会创建一个大文件(大小> 2GB)。

不,它没有。 creat()始终创建一个空文件(或截断现有文件)。

答案 1 :(得分:0)

您可以编写creat包装函数,该函数使用-D_FILE_OFFSET_BITS=32专门编译。这将为您提供一个文件描述符,限制为32位文件大小。但是,这仅适用于某些32位环境。

还有RLIMIT_FSIZE,可以使用setrlimit进行设置,但我不知道它有多可靠。