Pseudo-terminais vs. um par de canos

2

Por que os pseudo-terminais são um recurso separado em sistemas do tipo Unix? O que os torna superiores a um par de tubos ou FIFOs para implementar emuladores de terminal?

    
por osvein 12.07.2016 / 11:51

1 resposta

3

Os terminais são diferentes de outras formas de E / S, e um emulador de terminal precisa se apresentar como um terminal.

  • Um terminal (incluindo um pseudo-terminal) possui certos atributos, como o comprimento da linha e sequências de controle suportadas. Programas podem pedir por isso, por exemplo, em geral, ls determinará se sua saída está indo para um terminal e, em seguida, ajustará suas cores e tabulação para corresponder ao terminal.

    Você pode testar isso: ls | cat não fornecerá colunas separadas. Um pseudoterminal é usado para passar os valores apropriados para o emulador de terminal.

    Como outro exemplo, programas como sudo e ssh irão, por razões de segurança, ler a senha diretamente do terminal, você não pode canalizá-los.

  • Os terminais são usados para controlar processos. Se você pressionar ^C , o terminal enviará SIGINT para seu processo em primeiro plano . Este é o trabalho do terminal. Isso significa que, para que coisas como ^C funcionem, deve haver um terminal.

    Da mesma forma, desligar em um terminal (ou em um sistema moderno, fechando a janela do emulador de terminal) enviará SIGHUP para todos os processos associados a ele.

    O pseudoterminal lida com isso, um par de canos não pode.

    Em geral, todos os processos, exceto os daemons, possuem um terminal de controle. Você pode usar ps para informar quais processos pertencem a quais terminais.

por 12.07.2016 / 16:08