Por que usar um pts para xterm ou qualquer coisa

4

Eu continuo lendo em vários sites que os arquivos de dispositivo pts são usados para pseudo-terminais que "não estão diretamente conectados ao hardware" (ssh, telnet).

Como o xterm em execução na sua máquina está conectado diretamente à saída do seu teclado e à tela da sua tela, por que isso usa um arquivo de dispositivo pseudo-terminal?

Eu li a outra pergunta sobre ttys pts, ... e isso não parece cobrir isso ...

Além disso, qual é a necessidade de um "pseudo-terminal", se é basicamente um arquivo de dispositivo com entrada e saída, por que importa o que está vindo?

Obrigado antecipadamente

    
por rubixibuc 27.12.2011 / 04:58

2 respostas

3

Existem várias coisas sobre os terminais que são gerenciados dentro do kernel, como sinais de teclado (mapeamento, por exemplo, Ctrl+Z para SIGSTOP ), gerenciando grupos de processos em primeiro plano e em segundo plano, um mecanismo de edição de linha extremamente simples, enviando SIGHUP quando o terminal for embora, e outras sutilezas .

Com um terminal de hardware, o dispositivo terminal fica entre o aplicativo e o hardware. O tipo de dispositivo terminal depende do tipo de hardware, por exemplo (no Linux) /dev/tty1 para um teclado e tela do PC, /dev/ttyS0 para um terminal conectado por uma linha serial, /dev/ttyUSB0 para um terminal conectado via USB, etc.

+-------------+         +-----------------+         +-------------+
| text mode   |         | kernel          |         | peripheral  |
| application |<------->| e.g. /dev/ttyS0 |<------->| e.g. on a   |
|             |         |                 |         | serial port |
+-------------+         +-----------------+         +-------------+

Com um emulador de terminal , o princípio é o mesmo, com a conexão ainda passando por um driver de kernel, mas o que é no outro extremo também é um processo.

+-------------+         +-----------------+         +-------------------+
| text mode   |         | kernel          |         | terminal emulator |
| application |<------->| /dev/pts/*      |<------->| e.g. xterm, sshd, |
|             |         |                 |         |      screen, ...  |
+-------------+         +-----------------+         +-------------------+

Xterm, telnetd¹, sshd e similares não estão (diretamente) conectados a nenhum hardware. Quando você digita uma tecla em um teclado, a informação passa pelo teclado (o dispositivo físico) para o driver do teclado dentro do kernel, que então o retransmite para um processo que está escutando no dispositivo de teclado. Se você estiver em uma sessão gráfica, esse processo é um servidor X , que retransmite informação para o processo cuja janela é focalizada. Inversamente, quando um programa rodando dentro do xterm produz saída, o xterm transforma isto em uma ordem para o servidor X exibir certos caracteres em uma certa fonte em uma certa posição. Não há nenhum hardware envolvido perto do processo que está processando a entrada ou produzindo a saída, e possivelmente nenhum (por exemplo, se a janela xterm não estiver visível na tela, ou pelo menos nenhuma localmente se o terminal for fornecido por um telnet ou servidor ssh).

¹ O terminal está no lado remoto (servidor).

    
por 27.12.2011 / 23:58
0

Aqui está um link que encontrei e responde à pergunta. Basicamente, diz que eles foram criados para mover a emulação de terminal para o espaço do usuário. Está no topo da página.

link

    
por 27.12.2011 / 10:02