Системное программирование в UNIX средствами Free Pascal


         

Введение


В этой главе будут рассмотрены основные примитивы для работы с файлами, предоставляемые системой UNIX. Эти примитивы состоят из небольшого набора системных вызовов, которые обеспечивают прямой доступ к средствам ввода/вывода, обеспечиваемым ядром UNIX. Они образуют строительные блоки для всего ввода/вывода в системе UNIX, и многие другие механизмы доступа к файлам в конечном счете основаны на них. Названия этих примитивов приведены в табл. 2.1. Дублирование функций, выполняемых различными вызовами, соответствует эволюции UNIX в течение последнего десятилетия.

Типичная программа UNIX вызывает для инициализации файла вызов fdopen (или fdcreat), а затем использует вызовы fdread, fdwrite или fdseek для работы с данными в файле. Если файл больше не нужен программе, она может вызвать fdclose, показывая, что работа с файлом завершена. Наконец, если пользователю больше не нужен файл, его можно удалить из системы при помощи вызова unlink.

Следующая программа, читающая начальный фрагмент некоторого файла, более ясно демонстрирует эту общую схему. Так как это всего лишь вступительный пример, мы опустили некоторые необходимые детали, в частности обработку ошибок. Заметим, что такая практика совершенно недопустима в реальных программах.

Таблица 2.1. Примитивы UNIX

Имя

Функция

fdopen

Открывает файл для чтения или записи либо создает пустой файл

fdcreat

Создает пустой файл

fdclose

Закрывает открытый файл

fdread

Считывает информацию из файла

fdwrite

Записывает информацию в файл

fdseek

Перемещается в заданную позицию в файле

unlink

Удаляет файл

fcntl

Управляет связанными с файлом атрибутами

(* элементарный пример                   *)

uses linux;

var

  fd:integer;

  nread:longint;

  buf:array [0..1024-1] of char;

begin

  (* Открыть файл 'data' для чтения *)

  fd := fdopen ('data', Open_RDONLY);

  (* Прочитать данные *)

  nread := fdread (fd, buf, 1024);

  (* Закрыть файл *)

  fdclose (fd);



Содержание  Назад  Вперед





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