ファイルが 2GB に達すると停止します。
FILE構造などによる内部制限はありますか?
これは libc (標準 C ライブラリ) によるものです。x86 (IA-32) Linux システムのデフォルトでは、glibc (GNU の C ライブラリ) によって提供される 32 ビット関数です。したがって、デフォルトでは、ファイル ストリーム サイズは 32 ビット (2^(32-1)) に基づいています。
Large File Supportの使用については、Web ページを参照してください。
#define _FILE_OFFSET_BITS 64
/* or more commonly add -D_FILE_OFFSET_BITS=64 to CFLAGS */
#include <stdio.h>
int main(void) {
char c[] = "abcdefghij";
size_t rez;
FILE *f = fopen("filldisk.dat", "wb");
while (1) {
rez = fwrite(c, 1, sizeof(c), f);
if ( rez < sizeof(c) ) { break; }
}
fclose(f);
return 0;
}
注: ほとんどのシステムは、fopen (および off_t) が 2^31 のファイル サイズ制限に基づいていることを想定しています。off64_t
それらをandに置き換えるとfopen64
、これが明確になり、使用法によっては最善の方法になる場合があります。しかし、それらは非標準であるため、一般的には推奨されません。