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

Многие системные вызовы имеют отношение к файловой системе. В этом разделе будут рассмотрены вызовы, работающие с отдельными файлами, а в следующем разделе — те вызовы, которые оперируют каталогами или файловой системой в целом.

Чтобы прочитать данные из файла или записать их в файл, сначала его необходимо открыть. Для данного вызова необходимо указать имя открываемого файла (с указанием абсолютного пути либо пути относительно рабочего каталога) и код ORDONLY, O_WRONLY или O_RDWR, означающий, что файл открывается для чтения, записи или для чтения и записи. Для создания нового файла используется параметр O_CREAT. Возвращаемый дескриптор файла впоследствии может быть использован для чтения или записи. После этого файл может быть закрыт с помощью системного вызова close, который делает дескриптор файла доступным для повторного использования при последующем системном вызове open.

Наиболее часто используемыми вызовами, несомненно, являются read и write. Вызов read мы уже рассмотрели, вызов write имеет те же параметры.

Несмотря на то что большинство программ читают и записывают файлы последовательно, некоторым прикладным программам необходима возможность произвольного доступа к любой части файла. С каждым файлом связан указатель на текущую позицию. При последовательном чтении (записи) он обычно указывает на байт, который должен быть считан (записан) следующим. Системный вызов lseek может изменить значение указателя, при этом последующие вызовы read или write начнут свою работу с нового произвольно указанного места в файле.

Вызов lseek имеет три параметра: первый — это дескриптор файла, второй — позиция в файле, третий — указание, относительно чего задана позиция — начала файла, текущей позиции или конца файла. Вызов lseek возвращает абсолютную позицию в файле (в байтах) после изменения указателя.

Для каждого файла UNIX хранит следующие данные: код режима файла (обычный файл, специальный файл, каталог и т. д., а также права доступа к файлу), размер, время последнего изменения и другую информацию. Программы могут запрашивать эту информацию посредством системного вызова stat. Его первый параметр определяет файл, информацию о котором необходимо получить, второй является указателем на структуру, в которую она должна быть помещена. Для открытого файла то же самое делает системный вызов fstat.

1.6.3.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Системные вызовы для управления файлами:

  1. I. 1. СИСТЕМНЫЙ ПОДХОД КАК ИНСТРУМЕНТ ДЛЯ ПОСТРОЕНИЯ СИСТЕМНЫХ ОПИСАНИЙ
  2. Психологическая системность в управлении.
  3. Психологическая системность в управлении.
  4. I. СИСТЕМНЫЕ ОПИСАНИЯ - ГЛАВНЫЙ РЕЗУЛЬТАТ СИСТЕМНОГО ПОДХОДА В ПСИХОЛОГИИ
  5. § 45 Меры к охранению открывшегося наследства. – Опись. – Вызов наследников. – Утверждение в правах наследства. – Срок на явку наследников и вступление явившихся. – Особые правила для торгового сословия.
  6. Психология личности целостна, системна (принцип целостности, системности).
  7. ВЫЗОВ ВРАЧА
  8. СПТ откликается на вызов обстоятельств
  9. Быстрый вызов желаемого
  10. Бросьте себе вызов
  11. Самоубийство как вызов обществу
  12. Статья 1040. Обращение взыскания на имущество, переданное в управление, по требованию кредитора установщика управления
  13. § 14 Условное соглашение. – Предложение и вызов. – Договор посредством публичного торга или состязания. – Одностороннее обещание.
  14. § 3. Право управления предприятием как особый вид абсолютных прав. Право полного и ограниченного управления (п. 1774-1776)
  15. УПРАВЛЕНИЕ ВРЕМЕНЕМ VERSUS УПРАВЛЕНИЕ СОБОЙ
  16. § 46 Принятие наследства. – Значение вызова кредиторов и некоторых публикаций. – Отзыв о принятии и действия, служащие признаком принятия.
  17. ПРИНЦИП СИСТЕМНОСТИ
  18. § 2.4. Системный подход
  19. принцип системности
  20. Тема 1. Основные принципы системного анализа