Специализация (системное программирование в Linux)

Лабораторная работа 1
Варианты доступа к файловым системным функциям во freepascal

Заданиe

Используя рассмотренные на лекциях 4 механизма доступа к системным вызовам Linux, разработать в четырех вариантах программу, позволяющую создать "перевернутую" копию регулярного файла, имя которого передано программе в качестве параметра. Формировать имя файла-копии, добавляя к имени исходного файла расширение ".copy".

Для обеспечения возможности работы с файлами больших размеров не допускается их полная загрузка и обработка в оперативной памяти. Для хранения и обработки части файла разрешается использовать буфер оперативной памяти размером не более 128 байт.

Рекомендуется использовать файловые функции открытия, закрытия, чтения, записи, позиционирования; при необходимости - получения статуса (размера) файла .

  1. Функции кроссплатформенного варианта: assign, reset, rewrite, close, read, write, blockread, blockwrite, seek, filesize и т.д.
  2. Функции oldlinux: fdopen, fdclose, fdread, fdwrite, fdseek, fstat и т.д.
  3. Функции baseunix: fpopen, fpclose, fpread, fpwrite, fplseek, fpfstat и т.д.
  4. В варианте libc применять низкоуровневые функции (open, __close, __read, __write, lseek, lstat и т.д.).

Проверить работоспособность работы программ на файлах различного размера, сравнить скорость работы программ.


Документация (chm) по файловым функциям в модулях system, oldlinux, baseunix, unixtype, unix, linux.

Документация по файловым функциям libc доступна в man-pages. При установленном пакете fpc-src c переведенными на freepascal заголовками функций libc можно ознакомиться в исходном коде libc (/usr/share/fpcsrc/packages/libc/src/).