ptmx and pts - Pseudo-terminaux maître et esclave.
La fichier
/dev/ptmx est un fichier spécial caractère avec un numéro
majeur 5 et un numéro mineur 2, habituellement en mode 0666, appartenant à root.root.
Il sert à créer une paire de pseudo-terminaux maître et esclave.
Lorsqu'un processus ouvre
/dev/ptmx, il reçoit un descripteur de
fichier pour le pseudo-terminal maître (PTM), et un périphérique est créé
pour le pseudo-terminal esclave (PTE) dans le répertoire
/dev/pts.
Chaque descripteur obtenu en ouvrant
/dev/ptmx est un PTM indépendant
avec son PTE associé, dont le chemin d'accès peut être obtenu en passant le
descripteur à
ptsname(3).
Avant d'ouvrir le pseudo-terminal esclave, vous devez passer de descripteur
du maître à
grantpt(3)
et
unlockpt(3).
Une fois que les deux pseudo-terminaux sont ouverts, l'esclave fournit
une interface au processus qui est identique au vrai terminal.
Les données écrites sur l'esclave se retrouvent en entrée sur le descripteur
du maître. Les données écrites sur le maître se retrouvent en entrée sur
l'esclave.
En pratique, les pseudo-terminaux servent à implémenter des émulateurs
de terminaux comme
xterm(1),
dans lesquel les données lues sur le terminal maître sont interprétées par
l'application de la même manière que le ferait un vrai terminal,
et pour implémenter des programmes de connexion distante comme
sshd(8),
dans lesquels les données lues sur le PTM sont envoyées sur le réseau
à un programme client qui est connecté à un terminal ou un émulateur.
Les pseudo-terminaux servent aussi à envoyer des données aux programmes
qui refusent de lire des données depuis des tubes (comme
su(8),
et
passwd(8)).
Le support Linux décrit ci-dessus (connu sous le nom de pty Unix98)
est réalisé en utilisant le système de fichiers
devpts,
qui devrait être monté sous
/dev/pts.
Avant le shéma Unix98, les PTYs maîtres étaient appelés
/dev/ptyp0, ...
et les esclaves
/dev/ttyp0, ...
et il fallait allouer au préalable des noeuds de périphériques.
Christophe Blaess, 2003.