Скачиваний:
65
Добавлен:
08.01.2014
Размер:
2.6 Mб
Скачать

Структура книги

Книга состоит из тринадцати глав.

Глава 1 представляет собой обзор основных понятий и терминологии. Два наиболее важных из обсуждаемых терминов – это файл (file) и процесс (process). Мы надеемся, что большинство читателей книги уже хотя бы частично знакомы с приведенным в главе материалом (см. в следующем разделе предпосылки для изучения книги).

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

В главе 3 изучается контекст работы с файлами. В ней рассмотрены вопросы владения файлами, управления системными привилегиями в системе UNIX и оперирования атрибутами файлов при помощи системных вызовов.

Глава 4 посвящена концепции дерева каталогов (directories) с точки зрения программиста. В нее также включено краткое обсуждение файловых систем (file systems) и специальных файлов (special files), используемых для представления устройств.

Глава 5 посвящена природе процессов UNIX и методам работы с ними. В ней представляются и подробно объясняются системные вызовы fork и ехес. Приводится пример простого командного интерпретатора (command processor).

Глава 6 – первая из трех глав, посвященных межпроцессному взаимодействию. Она охватывает сигналы (signals) и обработку сигналов (signal handling) и весьма полезна для перехвата ошибок и обработки аномальных ситуаций.

В главе 7 рассматривается наиболее полезный метод межпроцессного взаимодействия в системе UNIX – программные каналы, или конвейеры (pipes), позволяющие передавать выход одной программы на вход другой. Будет исследовано создание каналов, чтение и запись с их помощью, а также выбор из множества каналов.

Глава 8 посвящена методам межпроцессного взаимодействия, которые были впервые введены в ОС System V. В ней описаны блокировка записей (record locking), передача сообщений (message passing), семафоры (semaphores) и разделяемая память (shared memory).

В главе 9 рассматривается работа терминала на уровне системных вызовов. Представлен пример использования псевдотерминалов (pseudo terminals).

В главе 10 дается краткое описание сетевой организации UNIX и рассматриваются сокеты (sockets), которые могут использоваться для пересылки данных между компьютерами.

В главе 11 мы отходим от системных вызовов и начинаем рассмотрение основных библиотек. В этой главе приведено систематическое изложение стандартной библиотеки ввода/вывода (Standard I/O Library), содержащей намного больше средств для работы с файлами, чем системные примитивы, представленные в главе 2.

Глава 12 дает обзор дополнительных системных вызовов и библиотечных процедур, многие из которых очень важны при создании реальных программ. Среди обсуждаемых тем – обработка строк, функции работы со временем и функции управления памятью.

И, наконец, глава 13 содержит задачи с решениями, обобщающими весь предыдущий материал.

Что вы должны знать

Эта книга не является учебником по системе UNIX или языку программирования Паскаль, а подробно исследует интерфейс системных вызовов UNIX. Чтобы использовать ее наилучшим образом, необходимо хорошо изучить следующие темы:

  • вход в систему UNIX;

  • создание файлов при помощи одного из стандартных редакторов системы;

  • древовидную структуру каталогов UNIX;

  • основные команды работы с файлами и каталогами;

  • создание и компиляцию простых программ на языке Паскаль (включая программы, текст которых находится в нескольких файлах);

  • процедуры ввода/вывода;

  • использование аргументов командной строки;

  • применение man-системы (интерактивного справочного руководства системы). К сожалению, сейчас уже нельзя давать общие советы для работы со справочным руководством в различных системах, поскольку в формат руководства, прежде считавшийся стандартным, были внесены изменения несколькими производителями. Традиционно руководство было разбито на восемь разделов, каждый из которых был структурирован по алфавитному принципу. Наиболее важными являются три из них: раздел 1, описывающий команды; раздел 2, в котором представлены системные вызовы, и раздел 3, охватывающий функции стандартных библиотек.

Тем из вас, кто не знаком с какими-либо темами из приведенного списка, следует выполнить приведенные упражнения. Если потребуется дополнительная помощь, вы можете найти подходящее руководство, воспользовавшись библиографией в конце книги.

Наконец, стоит отметить, что для изучения информатики недостаточно простого чтения, поэтому на протяжении всей книги делается акцент на упражнения и примеры. Для выполнения упражнений вы должны иметь доступ к компьютеру с системой UNIX.

Упражнение 1. Объясните назначение следующих команд UNIX:

ls cat rm cp mv mkdir fpc

Упражнение 2. Создайте небольшой текстовый файл в вашем любимом текстовом редакторе. Создайте другой файл, содержащий пятикратно повторенный первый файл при помощи команды cat.

Подсчитайте число слов и символов в обоих файлах при помощи команды wc. Объясните полученный результат. Создайте подкаталог и поместите в него оба файла.

Упражнение 3. Создайте файл, содержащий список файлов в вашем начальном каталоге и в каталоге /bin.

Упражнение 4. Выведите при помощи одной команды число пользователей, находящихся в данный момент в системе.

Упражнение 5. Напишите, откомпилируйте и запустите на выполнение программу на языке Паскаль, которая выводит какое-либо приветствие.

Упражнение 6. Напишите, откомпилируйте и запустите на выполнение программу на языке Паскаль, которая печатает свои аргументы.

Упражнение 7. Напишите программу, которая подсчитывает и выводит число вводимых слов, строк и символов при помощи функций.

Упражнение 8. Создайте файл, содержащий процедуру на языке Паскаль, которая выводит сообщение 'hello, world'. Создайте отдельный файл основной программы, который вызывает эту процедуру. Откомпилируйте и выполните полученную программу, назвав ее hw.

Упражнение 9. Найдите в руководстве системы разделы, посвященные команде cat, процедуре printf и системному вызову write.

Соседние файлы в папке Полищук, Семериков. Системное программирование в UNIX средствами Free Pascal