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

         

Основные понятия и терминология

О книге
Назначение этой книги
Спецификация Х/Open
Структура книги
Что вы должны знать

Соглашения
Глава Основные понятия и терминология
Файл
Каталоги и пути
Владелец файла и права доступа
Обобщение концепции файла
Процесс
Межпроцессное взаимодействие



Системные вызовы и библиотечные подпрограммы
Введение
Системный вызов fdopen
Описание
Предостережение
Создание файла при помощи вызова fdopen

Описание
Системный вызов fdcreat
Описание
Системный вызов fdclose
Описание
Системный вызов fdread
Описание
Указатель чтения-записи

Системный вызов fdwrite
Описание
Пример copyfile
Эффективность вызовов fdread и fdwrite
Описание
Вызов fdseek и произвольный доступ
Описание
Пример: гостиница

Дописывание данных в конец файла
Удаление файла
Описание
Системный вызов fcntl
Описание
Основные понятия
Программа io
Использование стандартного вывода диагностики

Стандартная библиотека ввода/вывода: взгляд в будущее
Описание
Вывод сообщений об ошибках при помощи функции writeln
Системные вызовы и переменная linuxerror
Подпрограмма perror
Глава Работа с файлами
Пользователи и права доступа
Действующие идентификаторы пользователей и групп
Права доступа и режимы файлов
Описание

Дополнительные права доступа для исполняемых файлов
Маска создания файла и системный вызов umask
Описание
Вызов fdopen и права доступа к файлу
Определение доступности файла при помощи вызова access
Описание
Изменение владельца при помощи вызова chown

Файлы с несколькими именами
Описание
Системный вызов unlink
Системный вызов frename
Описание
Символьные ссылки
Описание
Еще об именах файлов

Описание
Получение информации о файле: вызов fstat
Описание
Подробнее о вызове chmod
Введение

Текущий рабочий каталог
Реализация каталогов
Снова о системных вызовах link и unlink
Точка и двойная точка
Права доступа к каталогам
Использование каталогов при программировании
Создание и удаление каталогов

Описание
Открытие и закрытие каталогов
Описание
Чтение каталогов: вызовы readdir и rewinddir
Описание
Второй пример: процедура find_entry

Текущий рабочий каталог
Описание
Определение имени текущего рабочего каталога
Описание
Обход дерева каталогов
Описание

Файловые системы UNIX
Кэширование: вызовы sync и fsync
Описание
Имена устройств UNIX
Файлы блочных и символьных устройств
Структура tstat

Информация о файловой системе
Описание
Ограничения файловой системы: процедуры pathconf и fpathconf
Описание
Понятие процесса
Системный вызов fork
Описание
Идентификатор процесса

Семейство вызовов ехес
Описание
Вызовы execv, execlp и execvp
Доступ к аргументам, передаваемым при вызове exec
Совместное использование вызовов ехес и fork
Пример docommand
Вызов fork, файлы и данные

Вызов ехес и открытые файлы
Описание

Ожидание завершения определенного потомка: вызов waitpid

Ожидание завершения определенного потомка: вызов waitpid
Описание
Зомби-процессы и преждевременное завершение программы
Командный интерпретатор smallsh

Атрибуты процесса
Идентификатор процесса
Группы процессов и идентификаторы группы процессов
Изменение группы процесса
Описание
Сеансы и идентификатор сеанса
Описание

Переменные программного окружения
Описание
Текущий рабочий каталог
Текущий корневой каталог
Описание
Идентификаторы пользователя и группы
Ограничения на размер файла: вызов ulimit
Описание
.. Приоритеты процессов
Описание

Введение
Имена сигналов
Нормальное и аварийное завершение
Обработка сигналов

Наборы сигналов
Описание
Задание обработчика сигналов: вызов sigaction
Описание
Пример перехват сигнала SIGINT
Пример игнорирование сигнала SIGINT
Пример восстановление прежнего действия
Пример аккуратный выход
Сигналы и системные вызовы

Процедуры sigsetjmp и siglongjmp
Описание
Блокирование сигналов
Описание
Посылка сигналов другим процессам: вызов kill
Описание
Посылка сигналов самому процессу: вызовы sigraise и alarm
Описание

Системный вызов pause
Описание
Системные вызовы sigpending и sigsuspend
Описание
Глава Межпроцессное взаимодействие при помощи программных каналов
Каналы на уровне команд
Использование каналов в программе

Описание
Размер канала
Закрытие каналов
Запись и чтение без блокирования
Использование системного вызова select для работы с несколькими каналами

Описание
Каналы и системный вызов ехес
Именованные каналы, или FIFO

Программирование при помощи каналов FIFO
Описание
Введение
Мотивация
Блокировка записей при помощи вызова fcntl

Описание
Установка блокировки при помощи вызова fcntl
Снятие блокировки при помощи вызова fcntl
Задача об авиакомпании ACME Airlines
Проверка блокировки
Клинч
Введение и основные понятия

Ключи средств межпроцессного взаимодействия
Описание
Операция get
Другие операции
Структуры данных статуса
Очереди сообщений
Описание
Работа с очередью сообщений: примитивы msgsnd и msgrcv
Описание

Пример передачи сообщений: очередь с приоритетами
Программа etest
Программа stest
Системный вызов msgctl
Описание
Семафор как теоретическая конструкция
Описание

Операции над семафорами: вызов semop
Описание
Флаг SEM_UNDO
Пример работы с семафорами
Разделяемая память
Системный вызов shmget
Описание
Операции с разделяемой памятью: вызовы shmat и shmdt

Описание
Пример работы с разделяемой памятью: программа shmcopy
Команды ipcs и ipcrm
Введение

Терминал UNIX
Управляющий терминал
Передача данных
Эхо-отображение вводимых символов и опережающий ввод с клавиатуры
Канонический режим, редактирование строки и специальные символы
Взгляд с точки зрения программы
Системный вызов fdopen
Системный вызов fdread

Системный вызов fdwrite

Системный вызов fdwrite

Функции ttyname и isatty
Описание
Изменение свойств терминала: структура termios
Описание
Определение структуры termios
Массив с_сс
Поле c_cflag
Описание
Поле c_iflag

Поле c_oflag
Поле с_lflag
Описание
Параметры MIN и TIME
Другие системные вызовы для работы с терминалом
Описание
Сигнал разрыва соединения
Псевдотерминалы

Пример управления терминалом: программа tscript
Введение
Типы соединения
Адресация
Адресация Internet

Описание
Порты
Интерфейс сокетов
Создание сокета
Описание
Программирование в режиме TCP-соединения
Связывание
Описание
Включение приема TCP-соединений
Описание

Прием запроса на установку TCP-соединения
Описание
Подключение клиента
Описание
Пересылка данных
Описание
Закрытие TCP-соединения

Программирование в режиме пересылок UDP-дейтаграмм
Прием и передача UDP-сообщений
Описание
Различия между двумя моделями
Введение
Структура TFILE
Описание

Стандартный ввод, стандартный вывод и стандартный вывод диагностики
Стандартные процедуры опроса состояния
Описание
Построчный ввод и вывод
Описание

.. Произвольный доступ к файлу: процедуры fseek, rewind и ftell
Описание
Задание ширины поля и точности

Комплексный пример
Специальные символы
Процедура sprintf
Описание
.. Запуск программ при помощи библиотек стандартного ввода/вывода
Описание

.. Вспомогательные процедуры
Описание
Введение
Управление динамическим распределением памяти
Описание

Пример использования функции malloc: связные списки
Вызовы brk и sbrk
Ввод/вывод с отображением в память и работа с памятью
Описание
Системные вызовы ттар и munmap
Описание

Время
Описание
Работа со строками и символами
Семейство процедур strings
Описание
Преобразование строк в числовые значения
Описание
Проверка и преобразование символов

Дополнительные средства
Дополнение о сокетах
Потоки управления
Описание
Расширения режима реального времени
Получение параметров локальной системы
Интернационализация
Математические функции

Работа с портами ввода вывода
Введение
Обработка текста
Бинарные файлы
Каталоги

Файловые системы

Файловые системы
Файловая система proc
Управление файлами

Управление процессами
Программные каналы

.. Управление терминалом
.. Дата и время
.. Генератор лексических анализаторов lex

Введение
Список кодов и сообщений об ошибках
Приложение История UNIX
Основные стандарты
Приложение Модуль stdio
Приложение Замечания о компиляции во Free Pascal 0
Литература