Que sont les pseudo-terminaux (pty / tty)?

92

Cette question est peut-être vraiment fondamentale, mais je veux la comprendre à fond.

  1. Qu'est-ce qu'un pseudo terminal? (tty / pty)
  2. Pourquoi avons-nous besoin d'eux? Comment ont-ils été présentés et quel était le besoin?
  3. Sont-ils obsolètes? N'avons-nous plus besoin d'eux? Y at-il quelque chose qui les a remplacés?
  4. Un cas d'utilisation utile?

Ce que j'ai fait:

  1. Lisez les pages de manuel - vous avez des informations mais pas l’image exacte.
  2. J'ai essayé de lire sur eux à partir de Unix Network Programming de Richard Stevens. J'ai des infos mais pas la why?partie.
hari
la source
Je pense que oui aussi, surtout si aucun problème spécialisé comme openpty / forkpty ne se pose ici.
J'ai essayé de le signaler pour la migration, mais Linux / Unix n'est pas une cible de migration valide. En essayant la descente de gradient, Super User est déjà une cible légèrement meilleure que ce site, et peut-être qu’il pourra l’acheminer vers un site encore meilleur.
7
C'est un bon aperçu: linusakesson.net/programming/tty/index.php
nos
@nos: wow! C'est un lien génial. La chose que je cherchais. Merci une tonne :)
hari
Les chapitres 62 et 64 de l'interface de programmation Linux peuvent être utiles
zjk

Réponses:

42
  1. Un appareil qui a les fonctions d'un terminal physique sans en être réellement un. Créé par des émulateurs de terminaux tels que xterm. Plus de détails sont dans la page de manuel pty (7).
  2. Traditionnellement, UNIX utilise un concept de terminal de contrôle pour un groupe de processus et de nombreuses fonctions d’E / S sont conçues pour les terminaux. Les pseudoterminaux gèrent, par exemple, certains caractères de contrôle tels que ^ C.
  3. Ils ne sont pas obsolètes et sont utilisés dans de nombreux programmes, y compris ssh.
  4. ssh.
thiton
la source
1
Merci @thiton. Pouvez-vous élaborer sur votre exemple de ssh? Comment utilise-t-il pty / tty? Comment joue le rôle de maître / esclave ssh?
hari
3
ssh alloue un pty au shell qu'il crée. Le shell est connecté à l'extrémité esclave et peut donc s'appuyer sur toutes les capacités d'un terminal normal (par exemple, termcap si je me souviens bien), et le démon ssh se connecte à l'extrémité principale et y envoie et reçoit ses entrées.
27

La réponse est dans le nom - "Pseudo" signifiant "non authentique mais ayant l'apparence de".

Avec les premiers terminaux, il y avait toujours un élément matériel attaché avec le périphérique associé, qu'il s'agisse d'un matériel d'affichage ou d'un port série.

Avec xwindows, telnet et ssh, le logiciel "Pseudo devices" était devenu un logiciel indispensable pour remplacer le matériel d'affichage. Ce sont des "pseudo-terminaux" ... un logiciel qui émule le matériel d'un terminal, gérant les entrées et les sorties de la même manière qu'un périphérique physique le ferait de sorte que le logiciel connecté ne sache pas qu'aucun périphérique réel n'est connecté.

gview
la source
Parce que maintenant nous avons beaucoup d'applications qui ont besoin d'accéder au même matériel, chaque application utilise le matériel via un "pseudo" terminal?
hari
J'ai un peu élargi la réponse - j'espère que cela sera clarifié.
Non, nous n'avons plus ce genre de matériel. xterm émule un terminal classique, c'est tout.
@thiton: Quand vous dites emulates, c'est la partie logicielle, n'est-ce pas?
hari
1
Donc, utiliser le mot "terminal" dans le contexte UNIX aujourd'hui est en fait une erreur? Parce que tout est un "pseudo-terminal"?
A. Sallai
11

Les pseudo-terminaux sont des émulateurs pour les lignes série. Ils fournissent des points de terminaison pour les shells telnet, ssh et xterm.

Josué
la source
2
Et ce sont des reliques anciennes (en réalité, les applications coquille / texte interagissent toujours sur un périphérique qui émule un graveur de type télé sur une ligne série, comme ce fut le cas il y a 40 ans ...) Nous en avons toujours besoin, car il n'y a pas de solution de remplacement: - (
nos
Eh bien, si vous considérez le terminal, je ne pense pas que vous ayez besoin de beaucoup plus que d'un flot de lettres qui vont et viennent ...
Diego Sevilla
4
@Diego Sevilla L'inventeur original unix a supprimé tty / ptys dans Plan 9, et un terminal utilise quasiment un flux de données in / out. Mais dans * nix, les tablettes sont toujours utilisées et utilisées par les consoles et les émulateurs de terminaux pour contrôler, par exemple, la taille du terminal, le contrôle de flux, la mise en mémoire tampon des lignes, les événements de clé spéciaux, etc.
nos
4
@nos: Il s'avère que ce ne sont pas les anciennes reliques que nous croyons. Essayer de faire sans eux dans Windows est plutôt pénible à la fin. Une seule chose entrave l’utilisation de la communication à distance par PowerShell: les programmes de console interactive ne fonctionnent pas et ne peuvent pas être corrigés correctement. Il n'y a aucune possibilité d'un éditeur de texte raisonnable comme DOS EDIT ou vi.
Josué
2
@Joshua Une autre preuve du contraire est que les concepteurs d'origine d'Unix ont créé Plan 9 OS, où ils ont complètement éliminé ttys, mais ils ont réussi à obtenir une telle configuration (et bien plus encore).
nos