PTY
Section : Manuel du programmeur Linux (
7)
Mise à jour de la version anglaise : 10 octobre 2005
Index
Menu principal
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.
Index
- NOM
-
- DESCRIPTION
-
- Pseudo-terminaux Unix 98
-
- Pseudo-terminaux BSD
-
- FICHIERS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 2 juillet 2008