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);

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

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

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

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

Из книги Разгони свой сайт автора Мациевский Николай

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


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

Из книги Реестр Windows автора Климов Александр

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


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

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович

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


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

Из книги Реестр Windows автора Климов А

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


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

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

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


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

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

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


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

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

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


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

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

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


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

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

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


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

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

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


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

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

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


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

Из книги Секреты приложений Google автора Балуев Денис

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


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

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

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


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

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

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


Открытия

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

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