Шрифт:
2. Один процесс открывает дескриптор при помощи вызова любой из функций Unix, возвращающей дескриптор, например
3. Отправляющий процесс строит структуру
4. Принимающий процесс вызывает функцию
Клиент и сервер должны располагать некоторым протоколом уровня приложения, с тем чтобы получатель дескриптора имел информацию о времени его появления. Если получатель вызывает функцию
Пример передачи дескриптора
Теперь мы представим пример передачи дескриптора. Мы напишем программу под названием
На рис. 15.1 показан первый шаг: наша программа
Рис. 15.1. Программа mycat после создания потокового канала при использовании функции socketpair
Затем процесс взывает функцию
Рис. 15.2. Программа mycat после запуска программы openfile
Родительский процесс должен передать программе
Преимущество выполнения дополнительной программы для открытия файла заключается в том, что за счет приравнивания привилегий пользователя к привилегиям владельца файла мы получаем возможность открывать те файлы, которые не имеем права открывать в обычной ситуации. Эта программа позволяет расширить концепцию обычных прав доступа Unix (пользователь, группа и все остальные) и включить любые формы проверки прав доступа. Мы начнем с программы
Листинг 15.7. Программа mycat: копирование файла в стандартный поток вывода
Если мы заменим вызов функции