В процессе использования программы для посторения перестановок чисел совместно с GNU/Linux столкнулся с ограничением на объем сохраняемого на жесткий диск файла.
Ограничение составляет 2147483647 байт (2 Гб - 1 байт).
Использую программу так:
1) Компилирование:
cc -Wall program.c
2) Создание первого элемента перестановки:
echo "0" > source.txt
3) Запуск программы с целью получения файла «destination.txt» на основе «source.txt»:
./a.out
4) Переименование файла «destination.txt» в «source.txt» для подготовки к повторному запуску программы:
mv destination.txt source.txt
5) С целью получения файла «source.txt» объемом 457 Мб повторить 9 раз команды, указанные в пунктах 3, 4:
for (( i=1 ; i<=9 ; i++ )) ; do ./a.out ; mv destination.txt source.txt ; done
Программа срабатывает правильно до пункта №5 включительно.
6) Произвожу дополнительный запуск приложения:
alex@comp:~/test$ ./a.out
Количество символов в первой строке изначального файла равно 11
Набор перестановок порядка N+1 был сохранен в файле с именем 'destination.txt'.
На данном этапе программа должна создать файл «destination.txt» с объемом 6,24 Гб.
Вместо этого был получен «урезанный» файл «destination.txt» с объемом 2 Гб - 1 байт.
Прошу помочь в выяснении причины, по которой не удалось создать файл с объемом более 2 Гб.
Данные об используемой ОС: Ubuntu GNU/Linux 12.04.1 LTS, 32-разрядная
alex@comp:~/test$ uname -a
Linux comp 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 2012 i686 i686 i386 GNU/Linux
Тип используемой ФС: ext4.
alex@comp:~$ df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
/dev/sdb1 294G 42G 238G 15% /
...
В процессе использования программы совместно с ОС FreeBSD, Windows 7 указанная проблема не возникала.