UNIX. Профессиональное программирование, 2-е издание (файл PDF)

У. Ричард Стивенс Стивен Раго

Оглавление
Отзывы ко второму и первому изданиям
Вступительное слово
Предисловия ко второму и первому изданиям
Глава 1. Обзор операционной системы UNIX
1.1. Введение
1.2. Архитектура UNIX
1.3. Вход в систему
1.4. Файлы и каталоги
1.5. Ввод и вывод
1.6. Программы и процессы
1.7. Обработка ошибок
1.8. Идентификация пользователя
1.9. Сигналы
1.10. Представление времени
1.11. Системные вызовы и библиотечные функции
1.12. Подведение итогов
Глава 2. Стандарты и реализации UNIX
2.1. Введение
2.2. Стандартизация UNIX
2.2.1. ISO C
2.2.2. IEEE POSIX
2.2.3. Single UNIX Specification
2.2.4. FIPS
2.3. Реализации UNIX
2.3.1. UNIX System V Release 4
2.3.2. 4.4BSD
2.3.3. FreeBSD
2.3.4. Linux
2.3.5. Mac OS X
2.3.6. Solaris
2.3.7. Прочие версии UNIX
2.4. Связь между стандартами и реализациями
2.5. Пределы
2.5.1. Пределы ISO C
2.5.2. Пределы POSIX
2.5.3. Пределы XSI
2.5.4. Функции sysconf, pathconf и fpathconf
2.5.5. Неопределенные пределы времени выполнения
2.6. Необязательные параметры
2.7. Макроопределения контроля функциональных особенностей
2.8. Элементарные системные типы данных
2.9. Конфликты между стандартами
2.10. Подведение итогов
Глава 3. Файловый ввод-вывод
3.1. Введение
3.2. Дескрипторы файлов
3.3. Функция open
3.4. Функция creat
3.5. Функция close
3.6. Функция lseek
3.7. Функция read
3.8. Функция write
3.9. Эффективность операций ввода-вывода
3.10. Совместное использование файлов
3.11. Атомарные операции
3.12. Функции dup и dup2
3.13. Функции sync, fsync и fdatasync
3.14. Функция fcntl
3.15. Функция ioctl
3.16. /dev/fd
3.17. Подведение итогов
Глава 4. Файлы и каталоги
4.1. Введение
4.2. Функции stat, fstat и lstat
4.3. Типы файлов
4.4. set-user-ID и set-group-ID
4.5. Права доступа к файлу
4.6. Принадлежность новых файлов и каталогов
4.7. Функция access
4.8. Функция umask
4.9. Функции chmod и fchmod
4.10. Бит sticky
4.11. Функции chown, fchown и lchown
4.12. Размер файла
4.13. Усечение файлов
4.14. Файловые системы
4.15. Функции link, unlink, remove и rename
4.16. Символические ссылки
4.17. Функции symlink и readlink
4.18. Временные характеристики файлов
4.19. Функция utime
4.20. Функции mkdir и rmdir
4.21. Чтение каталогов
4.22. Функции chdir, fchdir и getcwd
4.23. Специальные файлы устройств
4.24. Коротко о битах прав доступа к файлам
4.25. Подведение итогов
Глава 5. Стандартная библиотека ввода-вывода
5.1. Введение
5.2. Потоки и объекты FILE
5.3. Стандартные потоки ввода, вывода и сообщений об ошибках
5.4. Буферизация
5.5. Открытие потока
5.6. Чтение из потока и запись в поток
5.7. Построчный ввод-вывод
5.8. Эффективность стандартных функций ввода-вывода
5.9. Ввод-вывод двоичных данных
5.10. Позиционирование в потоке
5.11. Форматированный ввод-вывод
5.12. Подробности реализации
5.13. Временные файлы
5.14. Альтернативы стандартной библиотеке ввода-вывода
5.15. Подведение итогов
Глава 6. Информация о системе и файлы данных
6.1. Введение
6.2. Файл паролей
6.3. Теневые пароли
6.4. Файл групп
6.5. Идентификаторы дополнительных групп
6.6. Различия реализаций
6.7. Прочие файлы данных
6.8. Учет входов в систему
6.9. Информация о системе
6.10. Функции даты и времени
6.11. Подведение итогов
Глава 7. Среда окружения процесса
7.1. Введение
7.2. Функция main
7.3. Завершение работы процесса
7.4. Аргументы командной строки
7.5. Список переменных окружения
7.6. Раскладка памяти программы на языке C
7.7. Разделяемые библиотеки
7.8. Распределение памяти
7.9. Переменные окружения
7.10. Функции setjump и longjump
7.11. Функции getrlimit и setrlimit
7.12. Подведение итогов
Глава 8. Управление процессами
8.1. Введение
8.2. Идентификаторы процесса
8.3. Функция fork
8.4. Функция vfork
8.5. Функция exit
8.6. Функции wait и waitpid
8.7. Функция waitid
8.8. Функции wait3 и wait4
8.9. Гонка за ресурсами
8.10. Функция exec
8.11. Изменение идентификаторов пользователя и группы
8.12. Интерпретируемые файлы
8.13. Функция system
8.14. Учет использования ресурсов процессами
8.15. Идентификация пользователя
8.16. Временные характеристики процесса
8.17. Подведение итогов
Глава 9. Взаимоотношения между процессами
9.1. Введение
9.2. Вход с терминала
9.3. Вход в систему через сетевое соединение
9.4. Группы процессов
9.5. Сессии
9.6. Управляющий терминал
9.7. Функции tcgetpgrp, tcsetpgrp и tcgetsid
9.8. Управление заданиями
9.9. Выполнение программ командной оболочкой
9.10. Осиротевшие группы процессов
9.11. Реализация в FreeBSD
9.12. Подведение итогов
Глава 10. Сигналы
10.1. Введение
10.2. Концепция сигналов
10.3. Функция signal
10.4. Ненадежные сигналы
10.5. Прерванные системные вызовы
10.6. Реентерабельные функции
10.7. Семантика сигнала SIGCLD
10.8. Надежные сигналы. Терминология и семантика
10.9. Функции kill и raise
10.10. Функции alarm и pause
10.11. Наборы сигналов
10.12. Функция sigprocmask
10.13. Функция sigpending
10.14. Функция sigaction
10.15. Функции sigsetjmp и siglongjmp
10.16. Функция sigsuspend
10.17. Функция abort
10.18. Функция system
10.19. Функция sleep
10.20. Сигналы управления заданиями
10.21. Дополнительные возможности
10.22. Подведение итогов
Глава 11. Потоки
11.1. Введение
11.2. Концепция потоков
11.3. Идентификация потоков
11.4. Создание потока
11.5. Завершение потока
11.6. Синхронизация потоков
11.7. Подведение итогов
Глава 12. Управление потоками
12.1. Введение
12.2. Пределы для потоков
12.3. Атрибуты потока
12.4. Атрибуты синхронизации
12.5. Реентерабельность
12.6. Локальные данные потоков
12.7. Принудительное завершение потоков
12.8. Потоки и сигналы
12.9. Потоки и fork
12.10. Потоки и операции ввода-вывода
12.11. Подведение итогов
Глава 13. Процессы-демоны
13.1. Введение
13.2. Характеристики демонов
13.3. Правила программирования демонов
13.4. Журналирование ошибок
13.5. Демоны в единственном экземпляре
13.6. Соглашения для демонов
13.7. Модель клиент-сервер
13.8. Подведение итогов
Глава 14. Расширенные операции ввода-вывода
14.1. Введение
14.2. Неблокирующий ввод-вывод
14.3. Блокировка записей
14.4. STREAMS
14.5. Мультиплексирование ввода-вывода
14.5.1. Функции select и pselect
14.5.2. Функция poll
14.6. Асинхронный ввод-вывод
14.6.1. Асинхронный ввод-вывод в System V
14.6.2. Асинхронный ввод-вывод в BSD
14.7. Функции readv и writev
14.8. Функции readn и writen
14.9. Операции ввода-вывода с отображаемой памятью
14.10. Подведение итогов
Глава 15. Межпроцессное взаимодействие
15.1. Введение
15.2. Неименованные каналы
15.3. Функции popen и pclose
15.4. Сопроцессы
15.5. FIFO
15.6. XSI IPC
15.6.1. Идентификаторы и ключи
15.6.2. Структура прав доступа
15.6.3. Конфигурируемые пределы
15.6.4. Преимущества и недостатки
15.7. Очереди сообщений
15.8. Семафоры
15.9. Разделяемая память
15.10. Свойства взаимодействий типа клиент-сервер
15.11. Подведение итогов
Глава 16. Межпроцессное взаимодействие в сети: сокеты
16.1. Введение
16.2. Дескрипторы сокетов
16.3. Адресация
16.3.1. Порядок байтов
16.3.2. Форматы адресов
16.3.3. Определение адреса
16.3.4. Присвоение адресов сокетам
16.4. Установление соединения
16.5. Передача данных
16.6. Параметры сокетов
16.7. Экстренные данные
16.8. Неблокирующий и асинхронный ввод-вывод
16.9. Подведение итогов
Глава 17. Расширенные возможности IPC
17.1. Введение
17.2. Каналы на основе STREAMS
17.2.1. Именованные каналы STREAMS
17.2.2. Уникальные соединения
17.3. Сокеты домена UNIX
17.3.1. Именованные сокеты домена UNIX
17.3.2. Уникальные соединения
17.4. Передача дескрипторов файлов
17.4.1. Передача дескрипторов с помощью каналов STREAMS
17.4.2. Передача дескрипторов с помощью сокетов домена UNIX
17.5. Сервер открытия файлов, версия 1
17.6. Сервер открытия файлов, версия 2
17.7. Подведение итогов
Глава 18. Терминальный ввод-вывод
18.1. Введение
18.2. Обзор
18.3. Специальные символы ввода
18.4. Получение и изменение характеристик терминала
18.5. Флаги режимов терминала
18.6. Команда stty
18.7. Функции для работы со скоростью передачи
18.8. Функции управления линией связи
18.9. Идентификация терминала
18.10. Канонический режим
18.11. Неканонический режим
18.12. Размер окна терминала
18.13. termcap, terminfo и curses
18.14. Подведение итогов
Глава 19. Псевдотерминалы
19.1. Введение
19.2. Обзор
19.3. Открытие устройств псевдотерминалов
19.3.1. Псевдотерминалы на основе STREAMS
19.3.2. Псевдотерминалы в BSD
19.3.3. Псевдотерминалы в Linux
19.4. Функция pty_fork
19.5. Программа pty
19.6. Использование программы pty
19.7. Дополнительные возможности
19.8. Подведение итогов
Глава 20. Библиотека базы данных
20.1. Введение
20.2. Предыстория
20.3. Библиотека
20.4. Обзор реализации
20.5. Централизация или децентрализация?
20.6. Одновременный доступ
20.7. Сборка библиотеки
20.8. Исходный код
20.9. Производительность
20.10. Подведение итогов
Глава 21. Взаимодействие с сетевым принтером
21.1. Введение
21.2. Протокол печати через Интернет
21.3. Протокол передачи гипертекста
21.4. Очередь печати
21.5. Исходный код
21.6. Подведение итогов
Приложение А. Прототипы функций
Приложение В. Различные исходные тексты
Приложение C. Варианты решения некоторых упражнений
Список литературы
Алфавитный указатель