O que são pseudo terminais (pty / tty)?

92

Essa pode ser uma pergunta realmente básica, mas quero entendê-la completamente.

  1. O que é um pseudo terminal? (tty / pty)
  2. Por que nós precisamos deles? Como eles foram apresentados e qual era a necessidade disso?
  3. Eles estão desatualizados? Não precisamos mais deles? Existe algo que os substituiu?
  4. Algum caso de uso útil?

O que eu fiz:

  1. Leia páginas de manual - recebi algumas informações, mas não a imagem exata.
  2. Tentei ler sobre eles a partir de Unix Network Programming por Richard Stevens. Tenho algumas informações, mas não a why?parte.
hari
fonte
Também acho que sim, especialmente se não surgirem problemas especializados como openpty / forkpty aqui.
Tentou sinalizá-lo para migração, mas o Linux / Unix não é um destino de migração válido. Tentando uma descida gradiente, o Superusuário já é um destino um pouco melhor que este site, e talvez eles possam direcioná-lo para um site ainda melhor.
7
Esta é uma visão geral muito boa: linusakesson.net/programming/tty/index.php
nos
@nos: uau! Esse é um link incrível. A coisa que eu estava procurando. Graças a tonelada :)
hari
Capítulo 62 eo Capítulo 64 da interface de programação Linux pode ser útil
ZJK

Respostas:

42
  1. Um dispositivo que possui as funções de um terminal físico sem realmente ser um. Criado por emuladores de terminal como o xterm. Mais detalhes estão na página de manual (7).
  2. Tradicionalmente, o UNIX tem o conceito de um terminal de controle para um grupo de processos, e muitas funções de E / S são criadas com os terminais em mente. Os pseudo-terminais tratam, por exemplo, alguns caracteres de controle como ^ C.
  3. Eles não estão desatualizados e são usados ​​em muitos programas, incluindo o ssh.
  4. ssh.
thiton
fonte
1
Obrigado @thiton. Você pode, por favor, elaborar seu exemplo de ssh? Como ele usa pty / tty? Como é o papel do mestre / escravo ssh?
hari
3
O ssh aloca um pty para o shell que ele cria. O shell está conectado à extremidade escrava e, portanto, pode contar com todos os recursos de um terminal normal (por exemplo, termcap, se bem me lembro), e o daemon ssh se conecta à extremidade mestre e envia e recebe sua entrada lá.
27

A resposta está no nome - "Pseudo" significa "não genuíno, mas com a aparência de".

Nos primeiros terminais, sempre havia um hardware conectado ao dispositivo associado, seja hardware de exibição ou uma porta serial.

Com o xwindows, telnet e ssh, surgiu a necessidade do software "Pseudo-dispositivos" para fazer o trabalho de substituir o hardware da tela. Eles são "pseudo terminais" ... software que emula o hardware do terminal, manipulando entradas e saídas da mesma maneira que um dispositivo físico faria para que o software conectado não saiba que não há um dispositivo real conectado.

gview
fonte
Como agora temos muitos aplicativos que precisam acessar a mesma peça de hardware, todo aplicativo está usando o hardware via terminal "pseudo"?
hari
Expandi um pouco a resposta - espero que ela esclareça.
Não, simplesmente não temos mais esse tipo de hardware. O xterm emula um terminal clássico, só isso.
@ thiton: Quando você diz emulates, essa é a parte do software, não é?
hari
1
Então, usar a palavra "terminal" no contexto UNIX hoje está realmente errado? Porque tudo é um "pseudo-terminal"?
precisa
11

Os pseudo-terminais são emuladores para linhas seriais. Eles fornecem pontos de extremidade para shells telnet, ssh e xterm.

Joshua
fonte
2
E são relíquias antigas (na verdade, aplicativos de conchas / texto ainda estão interagindo em um dispositivo que emula um gravador de tele-tipo em uma linha serial como eles trabalhavam há 40 anos ...) Ainda precisamos deles porque não há substituto: - (
nºs
Bem, se você considerar o terminal, eu não acho que você precisa de muito mais do que uma torrente de cartas comming e indo ...
Diego Sevilla
4
@Diego Sevilla O inventor original do unix acabou com tty / ptys no Plano 9, e lá um terminal praticamente usa apenas um fluxo de dados de entrada / saída. Porém, no * nix, os ttys ainda estão presentes e são usados ​​pelos consoles e emuladores de terminal para, por exemplo, controlar o tamanho do terminal, o controle de fluxo, o buffer de linha, eventos-chave especiais e outras coisas.
nºs
4
@nos: Acontece que não são as relíquias antigas em que somos levados a acreditar. Tentar ficar sem eles no Windows é bastante doloroso no final. O uso do sistema de comunicação remota do PowerShell é dificultado por uma coisa: os programas interativos de console não funcionam e não podem ser corrigidos para funcionar corretamente. Não há possibilidade de um editor de texto razoável como o DOS EDIT ou vi.
Joshua
2
@ Joshuaua Outra evidência ao contrário é que os criadores originais do Unix criaram o Plan 9 OS, onde eliminaram completamente os ttys, mas conseguiram remoting dessa maneira (e muito mais).
Nos