Введение

В некоторых операционных системах, включая Unix-подобные системы, псевдотерминал, псевдо-TTY или ПТТ — это пара псевдоустройств (файлов), которые устанавливают асинхронный двунаправленный канал межпроцессного взаимодействия (IPC) (с двумя портами) между двумя или более процессами. Одно из псевдоустройств в паре, ведущее, предоставляет средства, с помощью которых эмулятор терминала или сервер удаленного входа в систему (например, серверы Telnet, rlogin или Secure Shell) могут работать, а также предоставляет API POSIX и Single Unix Specification в виде функции начиная с 1998 года.

История

Псевдотерминалы присутствовали в DEC PDP-6 Timesharing Monitor как минимум с 1967 года и использовались для реализации пакетной обработки. Они описаны в документации к последующей системе TOPS-10 для PDP-10. Другие операционные системы DEC также поддерживали PTY, включая RSTS/E для PDP-11, а также стороннюю операционную систему TENEX для PDP-10. Реализации псевдотерминалов Unix восходят к модификациям, которые RAND и BBN внесли в 6-е издание в конце 1970-х годов для поддержки удаленного доступа по сети. Современные псевдотерминалы Unix появились в 1983 году в ходе разработки Unix восьмой редакции и были основаны на аналогичной функции в TENEX. Они вошли в состав выпуска 4.2 BSD, с довольно сложным интерфейсом, предназначенным для использования. System V от AT&T включала поддержку псевдотерминалов в виде драйвера в своей модели устройств STREAMS, вместе с псевдотерминальным мультиплексором. Впоследствии это развилось в стиль PTY, используемый в Unix98.

Варианты

В системе BSD PTY файл подчиненного устройства, который обычно имеет имя вида /dev/tty[p za e][0 9a f], поддерживает все системные вызовы, применимые к текстовым терминальным устройствам. Таким образом, он поддерживает сеансы входа в систему. Файл главного устройства, который обычно имеет имя вида /dev/pty[p za e][0 9a f], является конечной точкой для связи с эмулятором терминала. При такой схеме именования может быть не более 256 пар tty. Кроме того, поиск первого свободного главного устройства может быть подвержен гонкам данных, если не используется схема блокировок. По этой причине современные операционные системы BSD, такие как FreeBSD, реализуют PTY Unix98. PTY BSD устарели и были заменены PTY Unix98, система именования которых не ограничивает количество псевдотерминалов, а доступ к ним осуществляется без риска возникновения гонок данных. /dev/ptmx – это "мультиплексор главного псевдотерминала". Открытие этого файла возвращает файловый дескриптор главного узла и приводит к созданию связанного с ним подчиненного узла /dev/pts/N.