O que significam pty e tty?

237

Notei que há muitas menções ptye, ttyem alguns projetos de código aberto, alguém poderia me dizer o que eles significam e qual é a diferença entre eles? Obrigado!

porque
fonte

Respostas:

225

"tty" originalmente significava "teletipo" e "pty" significa "pseudo-teletipo".

No UNIX, / dev / tty * é qualquer dispositivo que age como um "teletipo", ou seja, um terminal. (Chamado teletipo, porque era o que tínhamos para terminais naqueles dias de folga.)

Um pty é um pseudotty, uma entrada de dispositivo que age como um terminal para o processo de leitura e gravação lá, mas é gerenciado por outra coisa. Eles apareceram pela primeira vez (pelo que me lembro) para o X Window, a tela e afins, onde você precisava de algo que agisse como um terminal, mas pudesse ser usado em outro programa.

Charlie Martin
fonte
Eu acho que os ptys foram adicionados ao Unix principalmente para suportar Telnet, rsh e rlogin.
Fred Foo
5
@CharlieMartin Como assim o pty é algo "que agia como um terminal?" Por que queremos algo assim? E como outro programa faz uso desse pty? Meu palpite é que o pty retransmite comandos ou algo para o terminal real (tty) do programa. Isso está correto? Caso contrário, ignore meu palpite e responda a primeira parte do meu comentário.
OKGimmeMoney
16
Pense em um terminal como um objeto: ele conecta algo de um lado ao stdin e stdout do outro. Um verdadeiro TTY se conecta a um terminal físico. um PTY se conecta a um programa, por exemplo, xterm ou uma janela de comando ou uma janela de shell. Ele então mente para o programa e diz que realmente é um terminal, honesto. Antes dos PTYs, você conectava programas como esse com tubos, mas os tubos têm diferenças significativas, como nenhum controle de fluxo. Os PTYs pareciam resolver isso.
Charlie #
3
@CharlieMartin "Um verdadeiro TTY se conecta a um terminal físico". E o console do Linux? Por exemplo, em um sistema Ubuntu, existem consoles Linux Ctrl-Alt-F{1..6}e eles estão conectados /dev/tty{1..6}. O console do Linux não é um terminal físico, mas está conectado a um ttyN(não a ptyN). Estou faltando alguma coisa aqui?
Utku 26/03
1
Só que você praticamente não pode dizer nada definitivo sobre o LINUX que não terá um caso estranho. Nesse caso, o console do Linux é um recurso do kernel que usa uma entrada / dev / tty dev, mas depois se conecta a várias coisas para divulgar ao usuário. en.wikipedia.org/wiki/Linux_console
Charlie Martin
235

Um tty é um terminal (significa teletype - os terminais originais usavam uma impressora de linha para saída e um teclado para entrada!). Um terminal é basicamente apenas um dispositivo de interface do usuário que usa texto para entrada e saída.

Um pty é um pseudo-terminal - é uma implementação de software que aparece no programa anexado como um terminal, mas, em vez de se comunicar diretamente com um terminal "real", transfere a entrada e a saída para outro programa.

Por exemplo, quando você faz o ssh em uma máquina e executa ls, o lscomando está enviando sua saída para um pseudo-terminal, cujo outro lado está conectado ao daemon SSH.

caf
fonte
1
Você poderia dar um exemplo um pouco mais "preciso" de PTYs? Ainda não entendi onde eles entram e como são chamados. Graças
user3085931
Alguém pode ajudar quando e como *nixo sistema operacional baseado cria esses pseudo terminais.
Krishna Oza
@arth_coder: Eles são criados quando um aplicativo solicita um. Isso acontece quando você faz coisas como abrir uma nova janela gráfica do terminal ou efetuar login remotamente.
caf
@caf você pode nomear módulos do kernel ou daemon responsáveis ​​por gerar um terminal.
Krishna Oza
@arth_coder: Qualquer aplicação pode fazê-lo. sshde xtermsão dois exemplos típicos.
caf
21

tty: teletipo. Geralmente refere-se às portas seriais de um computador, às quais os terminais foram conectados.

pty: pseudoteletype. O kernel forneceu uma porta pseudo-serial conectada a programas que emulam terminais, como xterm ou screen.

wnoise
fonte
19

Se você executar o comando mount sem argumentos de linha de comando, que exibe os sistemas de arquivos montados em seu sistema, notará uma linha semelhante à seguinte: nenhum em / dev / pts type devpts (rw, gid = 5, mode = 620) Isso indica que um tipo especial de sistema de arquivos, devpts, é montado em / dev / pts. Este sistema de arquivos, que não está associado a nenhum dispositivo de hardware, é um sistema de arquivos "mágico" criado pelo Kernel do Linux. É semelhante ao sistema de arquivos / proc

Como o diretório / dev, / dev / pts contém entradas correspondentes aos dispositivos. Porém, diferentemente do / dev, que é um diretório comum, / dev / pts é um diretório especial criado dinamicamente pelo kernel Linux. O conteúdo do diretório varia com o tempo e reflete o estado do sistema em execução. As entradas em / dev / pts correspondem a pseudo-terminais (ou pseudo-TTYs ou PTYs).

O Linux cria um PTY para cada nova janela do terminal que você abre e exibe uma entrada correspondente em / dev / pts. O dispositivo PTY atua como um dispositivo de terminal - ele aceita entrada do teclado e exibe a saída de texto dos programas executados nele. . PTYs são numerados e o número PTY é o nome da entrada correspondente em / dev / pts.

Por exemplo, se o número PTY da nova janela do terminal for 7, chame este comando de outra janela:% echo 'Sou um di virtual>> / dev / pts / 7 A saída aparece na nova janela do terminal.

nikolaos_mparoutis
fonte
2

Um ttyé um física t erminal- t elet y porta pe em um computador (normalmente uma porta série).

A palavra teletipo é um curto-circuito da máquina de escrever telégrafo ou dispositivo de teletipo da década de 1930 - ela própria um dispositivo eletromagnético que substituiu as máquinas de codificação de telégrafo das décadas de 1830 e 1840.

Teletypewriter
TTY - Teletypewriter 1930

Um ptyé um p seudo- t ELE ty pe porta fornecido por um computador com sistema operacional Kernel para programas de software Connect emulando terminais, tais como ssh, xterm, ou na tela.

insira a descrição da imagem aqui
PTY - PseudoTeletype

Um terminal é simplesmente a interface de usuário de um computador que usa texto para entrada e saída.


Implementações de SO

Estes usam p seudo- t ELE ty pe portas no entanto, sua nomeação e implementações divergiram um pouco.

Linux monta um especial do sistema de arquivos devpts em / dev (o 's', presumivelmente, de pé para s erial) que cria uma entrada correspondente na /dev/ptspara cada nova janela de terminal de abrir, por exemplo,/dev/pts/0


O macOS / FreeBSD também usa a estrutura de arquivos / dev , no entanto, eles usam uma TTYconvenção de nomenclatura numerada ttyspara cada nova janela de terminal que você abrir, por exemplo/dev/ttys002


O Microsoft Windows ainda tem o conceito de uma LPTporta para terminais de impressora em linha no Shell de Comando para saída para uma impressora.

Tony Barganski
fonte