Linux |
CentOS 5.3 |
|
pty(7) |
pty − Interfaces pseudo-terminaux. |
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 y compris, cette limite était configurée à la compilation du noyau (CONFIG_UNIX98_PTYS), et le nombre permis de pseudo-teerminaux 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. |
Une description de l’ioctl() TIOCPKT, qui contrôle l’opération en mode paquet, peut être trouvée dans tty_ioctl(4). Les ioctl() BSD TIOCSTOP, TIOCSTART, TIOCUCNTL, TIOCREMOTE n’ont pas été implémentées sous Linux |
/dev/ptmx (Périphériques
clones maîtres Unix 98) |
select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4), tty_ioctl(4) |
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 21 juillet 2006. 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=en man 7 pty ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
pty(7) |