Duplication possible :
Quelle est la différence exacte entre un "terminal", un "shell", un "tty" et une "console" ?
Je vois toujours pts et tty quand j'utilise le who
commande mais je ne comprends jamais en quoi ils sont différents? Quelqu'un peut-il m'expliquer cela ?
Réponse acceptée :
Un tty est un terminal natif, le backend est émulé soit par le matériel, soit par le noyau.
Un pty (pseudo terminal device) est un terminal qui est émulé par un autre programme (exemple :xterm
, screen
, ou ssh
sont de tels programmes). Un pts est la partie esclave d'un pty .
(Plus d'informations peuvent être trouvées dans man pty
.)
Court résumé :
Un pty est créé par un processus via posix_openpt()
(qui ouvre généralement le périphérique spécial /dev/ptmx
), et est constitué d'une paire de dispositifs de caractères bidirectionnels :
-
La partie maître, qui est le descripteur de fichier obtenu par ce processus via cet appel, est utilisée pour émuler un terminal. Après une initialisation, la deuxième partie peut être déverrouillée avec
unlockpt()
, et le maître est utilisé pour recevoir ou envoyer des caractères à cette seconde partie (esclave). -
La partie esclave, qui est ancrée dans le système de fichiers en tant que
/dev/pts/x
(le vrai nom peut être obtenu par le maître viaptsname()
) se comporte comme un terminal natif (/dev/ttyx
). Dans la plupart des cas, un shell est démarré qui l'utilise comme terminal de contrôle.