当使用_FILE_OFFSET_BITS 64功能测试宏编译应用程序时,所有旧的32位接口系统调用(如creat / open / lseek等)将被新的64位接口系统调用替换(如creat64 / open64) / lseek64等)。因此,我的应用程序中的creat()调用会创建一个大文件(大小> 2GB)。但是,是否可以使用使用_FILE_OFFSET_BITS 64编译的相同应用程序创建小文件(大小< = 2GB)。
答案 0 :(得分:1)
因此,我的应用程序中的creat()调用会创建一个大文件(大小> 2GB)。
不,它没有。 creat()
始终创建一个空文件(或截断现有文件)。
答案 1 :(得分:0)
您可以编写creat
包装函数,该函数使用-D_FILE_OFFSET_BITS=32
专门编译。这将为您提供一个文件描述符,限制为32位文件大小。但是,这仅适用于某些32位环境。
还有RLIMIT_FSIZE
,可以使用setrlimit
进行设置,但我不知道它有多可靠。