PTY(7)

NOM
pty - Interfaces pseudo-terminaux

DESCRIPTION
Un pseudo-terminal est une paire de périphériques de caractères virtuels qui fournit un canal de communication bidirectionnel. Une extrémité du canal est appelée le maître ; l'autre extrémité est appelée l'esclave. L'extrémité esclave du pseudo-terminal fournit une interface qui se comporte exactement comme un terminal classique. Un processus qui s'attend à être connecté à un terminal peut ouvrir l'extrémité esclave d'un pseudo-terminal et peut être piloté par un programme qui aura ouvert l'extrémité maître. Tout ce qui est écrit sur l'extrémité maître est fourni au processus sur l'extrémité esclave comme si cela avait été entré sur un terminal. Par exemple, l'écriture du caractère d'interruption (généralement Ctrl-C) sur le périphérique maître engendrera un signal d'interruption (SIGINT) pour le groupe de processus d'avant-plan qui est connecté à l'esclave. Réciproquement, tout ce qui est écrit sur l'extrémité esclave du pseudo-terminal sera lu par le processus qui est connecté sur l'extrémité maître. Les pseudo-terminaux sont utilisés par des applications telles que les services de connexion réseau (ssh(1), rlogin(1), telnet(1)), les émulateurs de terminaux, script(1), screen(1), et expect(1). Historiquement, deux API pseudo-terminaux ont été développées : BSD et System V. SUSv1 a normalisé une API pseudo-terminal basée sur l'API System V, et cette API devrait être utilisée dans les nouveaux programmes qui utilisent les pseudo-terminaux. Linux fournit les pseudo-terminaux de style BSD et de style System V (normalisé). Les terminaux de style System V sont plus communément appelés, sous Linux, pseudo-terminaux Unix 98. Depuis le noyau 2.6.4, les pseudo-terminaux de style BSD sont considérés comme dépréciés (ils peuvent être désactivés lors de la configuration du noyau) ; les pseudo-terminaux Unix 98 devraient être utilisés dans les nouvelles applications.

  Pseudo-terminaux Unix 98
On ouvre un pseudo-terminal Unix 98 maître non utilisé par un appel à posix_openpt(3). (Cette fonction ouvre le périphérique clone maître, /dev/ptmx ; voir pts(4).) Après avoir effectué toutes les initialisations spécifiques au programme, modifié l'appartenance et les permissions du périphérique esclave avec grantpt(3), et déverrouillé l'esclave avec unlockpt(3)), le périphérique esclave correspondant peut être ouvert en passant à open(2) le nom renvoyé par ptsname(3). Le noyau Linux impose une limite sur le nombre de pseudo-terminaux Unix 98 disponibles. Dans les noyaux jusqu'au 2.6.3 inclus, cette limite était configurée à la compilation du noyau (CONFIG_UNIX98_PTYS), et le nombre permis de pseudo-terminaux pouvait aller jusqu'à 2048, avec une valeur par défaut de 256. Depuis le noyau 2.6.4, cette limite est ajustable dynamiquement via /proc/sys/kernel/pty/max, et un fichier correspondant, /proc/sys/kernel/pty/nr, indique le nombre de pseudo-terminaux actuellement en cours d'utilisation. Pour plus de détails sur ces deux fichiers, voir proc(5).

  Pseudo-terminaux BSD
Les pseudo-terminaux de style BSD sont fournis sous forme de paires pré-créées, avec des noms de la forme /dev/ptyXY (maître) et /dev/ttyXY (esclave), où X est une lettre parmi les 16 de l'ensemble [p-za-e], et Y une lettre parmi les 16 de l'ensemble [0-9a-f]. (L'intervalle exact des lettres dans ces deux ensembles varient suivant les implémentations Unix.) Par exemple, /dev/ptyp1 et /dev/ttyp1 constitue une paire de pseudo-terminaux BSD. Un processus trouve une paire de pseudo-terminaux inutilisée en essayant d'ouvrir (open(2)) chaque pseudo-terminal maître jusqu'à ce qu'une ouverture réussisse. Chaque pseudo-terminal esclave correspondant (substituez « tty » à « pty » dans le nom du maître) peut alors être ouvert.

FICHIERS
/dev/ptmx (Périphériques clones maîtres Unix 98)
/dev/pts/* (Périphériques esclaves Unix 98)
/dev/pty[p-za-e][0-9a-f] (Périphériques maîtres BSD)
/dev/tty[p-za-e][0-9a-f] (Périphériques esclaves BSD)

NOTES
Une description de l'ioctl(2) TIOCPKT, qui contrôle l'opération en mode paquet, peut être trouvée dans tty_ioctl(4). Les ioctl(2) BSD TIOCSTOP, TIOCSTART, TIOCUCNTL et TIOCREMOTE n'ont pas été implémentés sous Linux

VOIR AUSSI
select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4), tty_ioctl(4)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 6 juillet 2006 et révisée le 2 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 pty ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.