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

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 * term, struct winsize * winp);

Функция openpty() открывает ведущие и подчиненные псевдотерминалы, необязательно используя структуры struct termios и struct winsize, передаваемые как опции настройки псевдотерминала, возвращая 0 в случае успеха и -1 в случае ошибки. Файловые дескрипторы ведущего устройства и подчиненного компонента возвращаются аргументам masterfd и slavefd соответственно. Аргументы term и winp могут быть NULL, в случае чего они игнорируются, и настройка не выполняется.

Функция forkpty() работает так же, как и openpty(), но вместо возврата файлового дескриптора подчиненного компонента она разветвляет псевдотерминал как управляющий терминал stdin, stdout и stderr для дочернего процесса, а затем, подобно fork(), возвращает идентификатор дочернего процесса родительскому и 0 дочернему либо -1 при возникновении ошибки.

Даже с этими удобными интерфейсами связана значительная проблема: аргумент name был изначально предназначен для возврата имени устройства псевдотерминала вызывающему коду, но его использование небезопасно, поскольку openpty() и forkpty() не знают размера буфера. Всегда передавайте NULL в аргументе name. Используйте функцию ttyname(), описанную в начале этой главы, чтобы получить путевое имя файла устройства псевдотерминала.

Предпочтительный способ работы с struct termios заключается в использовании цикла чтение-модификация-запись, но данному случаю это не соответствует по двум причинам. Можно передать NULL и принять значения по умолчанию, что достаточно в большинстве случаев; а когда вы хотите предоставить настройки termios, вы часто заимствуете настройки у другого tty, или знаете точно, какими они должны быть (например, в случае концентратора последовательного порта SCSI, описанного ранее в этой главе).

tcgetattr(STDIN_FILENO, &term);

ioctl(STDIN_FILENO, TIOCGWINSZ, &ws);

pid = forkpty(&masterfd, NULL, &term, &ws);

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

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

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

Операции открытия, чтения, записи и закрытияфайлов

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

Операции открытия, чтения, записи и закрытияфайлов Первой функцией Windows, которую мы подробно опишем, является функция CreateFile, используемая как для создания новых, так и для открытия существующих файлов. Для этой функции, как и для всех остальных, сначала приводится


Время открытия страницы

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

Время открытия страницы При тестировании браузеров нужно было, во-первых, открыть на клиенте соответствующую данному случаю страницу, а также как-то отследить время на отображение конкретно HTML/CSS-части (понятно, что оно не совпадает со временем открытия всей страницы,


Открытия

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

Открытия Последняя закладка под названием «Просмотр» ответственна за показ фотографий, сделанных другими пользователями сервиса, которые открыли свои альбомы для публичного просмотра. Вообще, оригинальное название закладки, Explore, куда лучше описывает данную часть


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

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

16.6.1. Открытие псевдотерминалов Существует широкое разнообразие способов открытия псевдотерминалов. Обычно это делается (по крайней мере, в Linux) способом, более или менее соответствующим стандартам, основанным на SysV, а также устаревшим способом, основанным на практике BSD.


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

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

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


Диалоговое окно открытия и сохранения файла

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

Диалоговое окно открытия и сохранения файла Windows Me/2000 имеет новое диалоговое окно "ОткрытьСохранить файл", которое можно изменить по Вашему желанию. В левой части диалогового окна расположены пять системных папок, которые можно поменять местами или изменить на те,


Диалоговое окно открытия и сохранения файла

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

Диалоговое окно открытия и сохранения файла Windows XP имеет новое диалоговое окно "ОткрытьСохранить файл", которое можно изменить по Вашему желанию. В левой части диалогового окна расположены пять системных папок, которые можно поменять местами или изменить на те, которыми


Диалоговое окно открытия и сохранения файла для Office

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

Диалоговое окно открытия и сохранения файла для Office Office 2000/XP имеет новое диалоговое окно "Открыть/Сохранить файл", аналогичное в Windows Me/2000/XP, которое можно изменить по Вашему желанию. В левой части диалогового окна расположены пять папок. Но многих пользователей не


Настройка параметров открытия и сохранения файлов

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

Настройка параметров открытия и сохранения файлов Вкладка открытия и сохранения файлов Open and Save диалогового окна Options показана на рис. 3.5. Рис. 3.5. Диалоговое окно настройки параметров открытия и сохранения файловНа ней осуществляется настройка следующих параметров.• В


14.6. Простые программы

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

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


6.3.2. Доступ к устройству путем открытия файла

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

6.3.2. Доступ к устройству путем открытия файла Как работать с аппаратными устройствами? В случае символьного устройства ответ прост: откройте ссылку на устройство как обычный файл и осуществляйте чтение-запись традиционным образом. Например, если к первому параллельному


Настройка параметров открытия и сохранения файлов

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

Настройка параметров открытия и сохранения файлов Вкладка открытия и сохранения файлов Open and Save диалогового окна Options показана на рис. 3.5. На ней осуществляется настройка следующих параметров. Рис. 3.5. Диалоговое окно настройки параметров открытия и сохранения


Имеет ли владелец серверного процесса достаточно полномочий для открытия файлов?

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

Имеет ли владелец серверного процесса достаточно полномочий для открытия файлов? Полномочия к файловой системе, включая права к каталогам, могут вызвать проблемы в POSIX. Полномочия к каталогам могут вызвать проблемы в разделах Windows MTFS.Серверному процессу может


Настройка параметров открытия и сохранения файлов

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

Настройка параметров открытия и сохранения файлов Вкладка открытия и сохранения файлов Open and Save диалогового окна Options показана на рис. 3.5. Рис. 3.5. Диалоговое окно настройки параметров открытия и сохранения файловНа ней осуществляется настройка следующих параметров. • В


Окно открытия или сохранения файла

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

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