1

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

4

2 回答 2

1

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

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

于 2017-07-12T16:43:21.333 回答
0

You could write a creat wrapper function which is specifically compiled with -D_FILE_OFFSET_BITS=32. This would give you a file descriptor which is limited to 32-bit file sizes. However, this only works with certain 32-bit environments.

There is also RLIMIT_FSIZE, which can be set using setrlimit, but I have no idea how reliable it is.

于 2017-07-17T19:33:58.547 回答