pty – Interfaces de pseudoterminaux
Un pseudoterminal (parfois abrégé en
« pty ») est une paire de
périphériques virtuels en mode texte qui fournissent un canal de
communication bidirectionnel. Un bout du canal est appelé le
maître, l'autre bout est appelé l'
esclave.
L'extrémité esclave du pseudoterminal 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 pseudoterminal et être
piloté par un programme qui a ouvert l'extrémité
maître. Tout ce qui est saisi sur le maître est fourni au
processus sur l'esclave comme si c'était une entrée saisie sur
un terminal. Par exemple, saisir le caractère d'interruption (en
général Contrôle-C) sur le périphérique
maître cause l'envoi d'un signal d'interruption (
SIGINT) au
groupe de processus en avant-plan qui est connecté à l'esclave.
Réciproquement, tout ce qui est saisi sur l'esclave peut être lu
par le processus qui est connecté au périphérique
maître.
Le flux de données entre le maître et l’esclave est
géré de manière asynchrone, à peu près
comme le flux de données d’un terminal physique. Les
données saisies sur l’esclave seront disponibles rapidement sur
le maître, mais pourront ne pas l’être
immédiatement. De la même façon, un petit délai de
traitement entre une saisie sur le maître et l’apparition de
l’effet sur l’esclave pourra exister.
Historiquement, deux API de pseudoterminaux ont évolué :
BSD et System V. SUS version 1 a normalisé une API de
pseudoterminal basée sur l'interface de System V et cette API
doit être utilisée dans tous les nouveaux programmes qui
utilisent des pseudoterminaux.
Linux fournit à la fois des pseudoterminaux de type BSD et de type
System V (normalisés). Les terminaux de type System V
sont souvent appelés pseudoterminaux UNIX 98 sur les
systèmes Linux.
Since Linux 2.6.4, BSD-style pseudoterminals are considered deprecated: support
can be disabled when building the kernel by disabling the
CONFIG_LEGACY_PTYS option. (Starting with Linux 2.6.30, that option is
disabled by default in the mainline kernel.) UNIX 98 pseudoterminals should be
used in new applications.
Un maître de pseudoterminal UNIX 98 est ouvert en appelant
posix_openpt(3) (Cette fonction ouvre le périphérique
clone de maître,
/dev/ptmx ; consultez
pts(4)).
Après avoir réalisé n’importe quelle
initialisation spécifique à un programme, 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).
The Linux kernel imposes a limit on the number of available UNIX 98
pseudoterminals. Up to and including Linux 2.6.3, this limit is configured at
kernel compilation time (
CONFIG_UNIX98_PTYS), and the permitted number
of pseudoterminals can be up to 2048, with a default setting of 256. Since
Linux 2.6.4, the limit is dynamically adjustable via
/proc/sys/kernel/pty/max, and a corresponding file,
/proc/sys/kernel/pty/nr, indicates how many pseudoterminals are
currently in use. For further details on these two files, see
proc(5).
Les pseudoterminaux 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] (Les intervalles
précis de lettre dans ces ensembles varient entre les
différentes versions d'UNIX). Par exemple,
/dev/ptyp1 et
/dev/ttyp1 constituent une paire de pseudoterminaux BSD. Un processus
trouve une paire de pseudoterminaux inutilisée en essayant d'ouvrir
chaque maître de pseudoterminal avec
open(2) jusqu'à ce
qu'une ouverture réussisse. L'esclave de pseudoterminal correspondant
peut ensuite être ouvert (en remplaçant
« pty » par « tty »
dans le nom du maître).
- /dev/ptmx
- Périphérique de clone 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ître BSD
- /dev/tty[p-za-e][0-9a-f]
- Périphériques esclaves BSD
Les pseudoterminaux sont utilisés par des applications comme les services
de connexion réseau (
ssh(1),
rlogin(1),
telnet(1)), les émulateurs de terminal comme
xterm(1),
script(1),
screen(1),
tmux(1),
unbuffer(1) et
expect(1).
Une description de l'
ioctl(2) TIOCPKT, qui contrôle
l'opération en mode paquet, se trouve dans
ioctl_tty(2).
Les opérations
ioctl(2) BSD
TIOCSTOP,
TIOCSTART,
TIOCUCNTL et
TIOCREMOTE ne sont pas implémentées
sous Linux.
ioctl_tty(2),
select(2),
setsid(2),
forkpty(3),
openpty(3),
termios(3),
pts(4),
tty(4)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Paul Guillonneau <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]