table of contents
PTY(7) | Manuel du programmeur Linux | PTY(7) |
NOM¶
pty - Interfaces de pseudo-terminaux
DESCRIPTION¶
Un pseudo-terminal est une paire de périphériques en mode caractère virtuels qui fournissent un canal de communication bidirectionnelle. Un bout du canal est appelé le maître ; l'autre bout est appelé esclave. Le bout 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 le bout esclave d'un pseudo-terminal puis être piloté par un programme qui a ouvert le bout maître. Tout ce qui est écrit sur le maître est fourni au processus sur l'esclave comme si c'était écrit sur un terminal. Par exemple, écrire le caractère d'interruption (en général control-C) sur le périphérique maître cause l'envoi d'un signal d'interruption (SIGINT) au groupe de processus qui est connecté à l'esclave. Réciproquement, tout ce qui est écrit sur l'esclave peut être lu par le processus qui est connecté au périphérique maître. Les pseudo-terminaux sont utilisés par des applications telles que des services de login à distance (ssh(1), rlogin(1), telnet(1)), les émulateurs de terminaux, script(1), screen(1), et expect(1).
Historiquement, deux API de pseudo-terminaux ont évolué : BSD et System V. SUSv1 a standardisé une API de pseudo-terminal basée sur l'interface System V, et cette API doit être utilisée dans tous les nouveaux programmes qui utilisent des pseudo-terminaux.
Linux fournit à la fois des pseudo-terminaux de type BSD et de type System V (standardisés). Les terminaux de type System V sont souvent appelés pseudo-terminaux Unix 98 sur les systèmes Linux. Depuis le noyau 2.6.4, les pseudo-terminaux de type BSD sont considérés obsolètes (il peuvent être désactivés à la configuration du noyau) ; les pseudo-terminaux Unix 98 doivent être utilisés dans les nouvelles applications.
Pseudo-terminaux Unix 98¶
Un maître de pseudo-terminal Unix 98 est ouvert en appelant posix_openpt(3). (Cette fonction ouvre le périphérique de clonage de maître, /dev/ptmx ; voir pts(4).) Après avoir initialisé le périphérique, changé le propriétaire 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 le nom renvoyé par ptsname(3) dans un appel à open(2).
Le noyau Linux impose une limite au nombre de pseudo-terminaux Unix 98 disponibles. Dans les noyaux jusqu'à 2.6.3 inclus, cette limite est configurée à la compilation du noyau (CONFIG_UNIX98_PTYS), et le nombre de pseudo-terminaux autorisé peut être jusqu'à 2048, avec une valeur par défaut de 256. Depuis le noyau 2.6.4, la limite est ajustable de façon dynamique par le fichier /proc/sys/kernel/pty/max, et un autre fichier, /proc/sys/kernel/pty/nr, indique combien de pseudo-terminaux sont actuellement utilisés. Pour plus de détails sur ces fichiers, voir proc(5).
Pseudo-terminaux BSD¶
Les pseudo-terminaux de type BSD sont fournis comme des paires pré-créées, avec des noms de la forme /dev/ptyXY (maître) et /dev/ttyXY (esclave), où X est une lettre de l'ensemble de 16 caractères [p-za-e], et Y est une lettre de l'ensemble de 16 caractères [0-9a-f]. (L'intervalle précis de lettre dans ces ensembles varie entre les différentes versions d'Unix.) Par exemple, /dev/ptyp1 et /dev/ttyp1 constitue une paire de pseudo-terminal BSD. Un processus trouve un pseudo-terminal inutilisé en essayant d'ouvrir chaque maître de pseudo-terminal avec open(2) jusqu'à ce qu'une ouverture réussisse. L'esclave de pseudo-terminal correspondant peut ensuite être ouvert (en remplaçant « pty » par « tty » dans le nom du maître).
FICHIERS¶
/dev/ptmx (périphérique de clonage de
maître 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, se trouve dans tty_ioctl(4).
Les opérations ioctl(2) BSD TIOCSTOP, TIOCSTART, TIOCUCNTL et TIOCREMOTE ne sont pas implémentées sous Linux.
VOIR AUSSI¶
select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4), tty_ioctl(4)
COLOPHON¶
Cette page fait partie de la publication 3.23 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://alioth.debian.org/projects/perkamon/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-l10n-fr@lists.alioth.debian.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
10 octobre 2005 | Linux |