Системное программирование в UNIX средствами Free Pascal [А. П. Полищук] (doc) читать постранично

Книга в формате doc! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

А.П. Полищук, С.А. Семериков


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


Содержание

Предисловие 8
О книге 8
Назначение этой книги 8
Спецификация Х/Open 9
Структура книги 10
Что вы должны знать 10
Соглашения 12
Глава 1. Основные понятия и терминология 13
1.1. Файл 13
1.1.1. Каталоги и пути 13
1.1.2. Владелец файла и права доступа 14
1.1.3. Обобщение концепции файла 14
1.2. Процесс 15
1.2.1. Межпроцессное взаимодействие 15
1.3. Системные вызовы и библиотечные подпрограммы 15
Глава 2. Файл 17
2.1. Примитивы доступа к файлам в системе UNIX 17
2.1.1. Введение 17
2.1.2. Системный вызов fdopen 18
2.1.3. Создание файла при помощи вызова fdopen 20
2.1.4. Системный вызов fdcreat 22
2.1.5. Системный вызов fdclose 22
2.1.6. Системный вызов fdread 23
2.1.7. Системный вызов fdwrite 26
2.1.8. Пример copyfile 27
2.1.9. Эффективность вызовов fdread и fdwrite 29
2.1.10. Вызов fdseek и произвольный доступ 30
2.1.11. Пример: гостиница 31
2.1.12. Дописывание данных в конец файла 33
2.1.13. Удаление файла 34
2.1.14. Системный вызов fcntl 34
2.2. Стандартный ввод, стандартный вывод и стандартный вывод диагностики 35
2.2.1. Основные понятия 35
2.2.2. Программа io 36
2.2.3. Использование стандартного вывода диагностики 38
2.3. Стандартная библиотека ввода/вывода: взгляд в будущее 38
2.4. Системные вызовы и переменная linuxerror 41
2.4.7. Подпрограмма perror 41
Глава 3. Работа с файлами 43
3.1. Файлы в многопользовательской среде 43
3.1.1. Пользователи и права доступа 43
3.1.2. Права доступа и режимы файлов 44
3.1.3. Дополнительные права доступа для исполняемых файлов 45
3.1.4. Маска создания файла и системный вызов umask 46
3.1.5. Вызов fdopen и права доступа к файлу 48
3.1.6. Определение доступности файла при помощи вызова access 48
3.1.7. Изменение прав доступа при помощи вызова chmod 49
3.1.8. Изменение владельца при помощи вызова chown 50
3.2. Файлы с несколькими именами 50
3.2.1. Системный вызов link 51
3.2.2. Системный вызов unlink 51
3.2.3. Системный вызов frename 52
3.2.4. Символьные ссылки 52
3.2.5. Еще об именах файлов 54
3.3. Получение информации о файле: вызов fstat 54
3.3.1. Подробнее о вызове chmod 60
Глава 4. Каталоги, файловые системы и специальные файлы 62
4.1. Введение 62
4.2. Каталоги с точки зрения пользователя 62
4.3. Реализация каталогов 64
4.3.1. Снова о системных вызовах link и unlink 65
4.3.2. Точка и двойная точка 65
4.3.3. Права доступа к каталогам 66
4.4. Использование каталогов при программировании 67
4.4.1. Создание и удаление каталогов 67
4.4.2. Открытие и закрытие каталогов 68
4.4.3. Чтение каталогов: вызовы readdir и rewinddir 69
4.4.4. Текущий рабочий каталог 72
4.4.5. Смена рабочего каталога при помощи вызова chdir 72
4.4.6. Определение имени текущего рабочего каталога 73
4.4.7. Обход дерева каталогов 74
4.5. Файловые системы UNIX 78
4.5.1. Кэширование: вызовы sync и fsync 80
4.6. Имена устройств UNIX 81
4.6.1. Файлы блочных и символьных устройств 82
4.6.2. Структура tstat 82
4.6.3. Информация о файловой системе 83
4.6.4. Ограничения файловой системы: процедуры pathconf и fpathconf 84
Глава 5. Процесс 86
5.1. Понятие процесса 86
5.2. Создание процессов 87
5.2.1. Системный вызов fork 87
5.3. Запуск новых программ при помощи вызова ехес 89
5.3.1. Семейство вызовов ехес 89
5.3.2. Доступ к аргументам, передаваемым при вызове exec 92
5.4. Совместное использование вызовов ехес и fork 93
5.5. Наследование данных и дескрипторы файлов 96
5.5.1. Вызов fork, файлы и данные 96
5.5.2. Вызов ехес и открытые файлы 97
5.6. Завершение процессов при помощи системного вызова halt 98
5.7. Синхронизация процессов 98
5.7.1. Системный вызов wait 98
5.7.2. Ожидание завершения определенного потомка: вызов waitpid 100
5.8. Зомби-процессы и преждевременное завершение программы 102
5.9. Командный интерпретатор smallsh 102
5.10. Атрибуты процесса 108
5.10.1. Идентификатор процесса 108
5.10.2. Группы процессов и идентификаторы группы процессов 110
5.10.3. Изменение группы процесса 110
5.10.4. Сеансы и идентификатор сеанса 110
5.10.5. Переменные программного окружения 111
5.10.6. Текущий рабочий каталог 113
5.10.7. Текущий корневой каталог 113
5.10.8. Идентификаторы пользователя и группы 113
5.10.9. Ограничения на размер файла: вызов ulimit 114
5.10.10. Приоритеты процессов 115
Глава 6. Сигналы и их обработка 117
6.1. Введение 117
6.1.1. Имена сигналов 118
6.1.2. Нормальное и аварийное завершение 121
6.2. Обработка сигналов 122
6.2.1. Наборы сигналов 123
6.2.2. Задание обработчика сигналов: вызов sigaction 124
6.2.3. Сигналы и системные вызовы 128
6.2.4. Процедуры sigsetjmp и siglongjmp 129
6.3. Блокирование сигналов 130
6.4. Посылка сигналов 131
6.4.1. Посылка сигналов другим процессам: вызов kill 131
6.4.2. Посылка сигналов самому процессу: вызовы sigraise и alarm 134
6.4.3. Системный вызов pause 136
6.4.4. Системные вызовы sigpending и sigsuspend 138
Глава 7. Межпроцессное взаимодействие при помощи программных каналов 139
7.1. Каналы 139
7.1.1. Каналы на уровне команд 139
7.1.2. Использование каналов в программе 140
7.1.3. Размер канала 144
7.1.4. Закрытие каналов 146
7.1.5. Запись и чтение без блокирования 146
7.1.6. Использование системного вызова select для работы с несколькими каналами 149
7.1.7. Каналы и системный вызов ехес 154
7.2. Именованные каналы, или FIFO 157
7.2.1.