16.6.1. Открытие псевдотерминалов

16.6.1. Открытие псевдотерминалов

Существует широкое разнообразие способов открытия псевдотерминалов. Обычно это делается (по крайней мере, в Linux) способом, более или менее соответствующим стандартам, основанным на SysV, а также устаревшим способом, основанным на практике BSD. Наиболее распространенным методом среди системных программистов в Linux является набор расширений BSD, реализованных также как часть glibc. Менее распространенный метод документируется как часть стандарта 1998 года — Unix98, и документируется иначе в версии 2000 года стандарт Unix98.

Исторически существует два различных метода открытия псевдотерминалов в Unix и подобных системах. Linux изначально придерживался модели BSD, хотя она более сложная в использовании, поскольку модель SysV явно написана в рамках STREAMS, а в Linux STREAMS не реализована. Однако модель BSD требует, чтобы каждое приложение искало неиспользуемое ведущее устройство pty, зная о многих специфических именах устройств. Между 64 и 256 устройства pty обычно доступны, а с целью поиска первого открытого устройства программы проводят поиск в устройствах, начиная с наименьшего числа. Они выполняют поиск в специфической манере, которая демонстрируется в программе ptypair, включенной в данный раздел.

С моделью BSD связано несколько проблем.

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

• Время, уходящее на поиск, становится ощутимым при поиске среди тысяч узлов устройств в каталоге /dev. Системное время тратится, и доступ к системе замедляется, что очень плохо масштабируется в больших системах.

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

Поскольку модель SysV явно написана в рамках STREAMS и требует использования вызовов ioctl() для запуска подчиненных компонентов, она не является вариантом выбора Linux. Однако интерфейс Unix98 не определяет функции, присущие STREAMS, поэтому в 1998 году в Linux была добавлена поддержка псевдотерминалов стиля Unix98.

Ядро Linux может быть скомпилировано без поддержки интерфейса Unix98, и можно встретить более старые системы без псевдотерминалов стиля Unix98, поэтому мы представим код, который пытается открыть псевдотерминалы стиля Unix98, но также может вернуться к интерфейсу BSD. (Мы не документируем части модели SysV, присущие STREAMS; в [35] подробно описан интерфейс STREAMS. Вам вряд ли понадобится код, специфичный для STREAMS; спецификация Unix98 не требует его.)

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Открытие документа

Из книги Office 2007. Мультимедийный курс автора Мединов Олег

Открытие документа Для открытия созданного ранее документа Word выполните команду Открыть в меню Кнопки «Office» (либо нажмите комбинацию клавиш Ctrl+O). В результате откроется окно, изображенное на рис. 2.12. Рис. 2.12. Открытие документа ВНИМАНИЕ Чтобы пользовательский шаблон


Открытие документа

Из книги Adobe Photoshop CS3 автора Завгородний Владимир

Открытие документа Открыть документ Photoshop или любой другой растровый файл можно с помощью команды File ? Open (Файл ? Открыть). Окно команды открытия, как и окно команды сохранения, может отображаться в двух видах: в стиле Adobe или в стиле, приближенном к стандарту Windows (рис. 7.9). В


Создание и открытие

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Создание и открытие Создание и открытие проекта аналогичны таким же действиям в любой программе, работающей с сохраняемыми на диск документами, например с текстовым редактором (Блокнот, Microsoft Word).Если в параметрах проектов не установлен флажок Авт. сохранять и загружать


Открытие рисунков

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

Открытие рисунков Программа AutoCAD по умолчанию записывает внутреннее представление рисунка в файл с расширением DWG. Кроме рисунка файл содержит ряд параметров, определяющих значения переключателей режимов шага SNAP, сетки GRID, ортогонального режима ORTHO; принятые единицы


Открытие документа

Из книги Word 2007.Популярный самоучитель автора Краинский И

Открытие документа В процессе работы пользователю часто приходится не только создавать документы, но и вносить изменения в существующие. Чтобы это сделать, необходимо открыть документ одним из следующих способов.Открытие документа не из WordОткрывать документы не


Открытие SCM

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Открытие SCM Для создания службы требуется отдельный процесс, выступающий в качестве "администратора" и играющий во многом ту же роль, что и программа JobShell, которая использовалась в главе 6 для запуска задач. Первый шаг состоит в открытии SCM и получении дескриптора, который


Открытие файла

Из книги Справочник по PHP автора

Открытие файла fopenОткрывает файл и привязывает его к дескриптору.Синтаксис:int fopen(string $filename, string $mode, bool $use_include_path=false)Открывает файл с именем $filename в режиме $mode и возвращает дескриптор открытого файла. Если операция "провалилась", то функция возвращает false. Необязательный


Открытие документа

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Открытие документа pdf_set_infoЗаполнение поля информации документа.Синтаксис:void pdf_set_info(int pdf_document, string fieldname, string value)Возможные поля fieldname:Функция должна вызываться до создания страниц.<?php$fd = fopen("test.pdf", "w");$pdfdoc = pdf_open($fd);pdf_set_info($pdfdoc, "Author", "Имя автора");pdf_set_info($pdfdoc, "Creator", "Название


16.6.2. Простые способы открытия псевдотерминалов

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

16.6.2. Простые способы открытия псевдотерминалов В библиотеке libutil glibc предлагает две функции — openpty() и forkpty(), — выполняющие почти всю работу по поддержке псевдотерминалов.#include <pty.h>int openpty(int * masterfd, int * slavefd, char * name, struct termios * term, struct winsize * winp);int forkpty(int * masterfd, char * name, struct termios *


16.6.4. Примеры псевдотерминалов

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

16.6.4. Примеры псевдотерминалов Возможно, одной из самых простых программ, которая может быть написана для использования pty, является программа, открывающая пару pty и запускающая оболочку на подчиненном компоненте pty, соединяя его с управляющим устройством pty. Написав эту


Открытие файлов

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Открытие файлов Файл должен быть открыт функциями open, sopen или creat до выполнения первой операции ввода или вывода с использованием функций нижнего уровня для этого файла.Файл может быть открыт для чтения, записи, или для чтения и записи, может быть открыт в текстовом или в


Открытие рисунков

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

Открытие рисунков Программа AutoCAD по умолчанию записывает внутреннее представление рисунка в файл с расширением DWG. Кроме рисунка файл содержит ряд параметров, определяющих значения переключателей режимов шага SNAP, сетки GRID, ортогонального режима ORTHO; принятые единицы


Открытие рисунков

Из книги автора

Открытие рисунков Программа AutoCAD по умолчанию записывает внутреннее представление рисунка в файл с расширением DWG. Кроме рисунка файл содержит ряд параметров, определяющих значения переключателей режимов шага SNAP, сетки GRID, ортогонального режима ORTHO; принятые единицы


Б.1.1. Открытие файла

Из книги автора

Б.1.1. Открытие файла Чтобы открыть файл и получить дескриптор для работы с ним, необходимо вызвать функцию open(). В качестве аргументов она принимает строку с путевым именем файла и флаги, определяющие способ открытия. С помощью функции open() можно также создать новый файл.


Открытие документа

Из книги автора

Открытие документа Сохраненный документ можно будет открыть при помощи команд Файл ? Открыть или с помощью комбинации клавиш Ctrl и O. Окно открытия документаВы уже, наверное, заметили, что мы пользуемся пока только меню Файл. Меню ФайлЗдесь есть активные строки (темный