Como o Terminal.app detecta uma mudança nos parâmetros do terminal?

1

Em uma resposta a outra pergunta, Chris Page disse que o Terminal pode detectar quando os parâmetros do terminal estão em um estado que é provável que seja para a entrada de senha. Por exemplo, o terminal pode estar no modo cozido com o eco de caractere desativado.

Como o Terminal detecta isso? Existe uma API onde você pode se inscrever para alterações nos parâmetros do terminal? O poll do terminal? Um caractere especial é enviado ao terminal quando os parâmetros do terminal mudam?

    
por fumoboy007 08.11.2016 / 09:38

3 respostas

1

Terminal pesquisa o estado do dispositivo tty usando tcgetattr (3) x-man-page: // 3 / tcgetattr e verifica se o sinalizador c_lflag ICANON está configurado e o sinalizador ECHO não.

Pesquise após receber a saída do programa remoto, ou quando o usuário insere texto usando um método de entrada embutido que pode precisar ser impedido de exibir a entrada do usuário como texto “marcado”.

    
por 04.10.2018 / 03:29
1

Como o Terminal.app é código fechado , ninguém pode fazer mais do que adivinhar exatamente o que ele faz (pesquisa ou algum recurso de notificação fornecido pela Apple). Em qualquer caso, ele tem controle completo sobre os dados que se movem entre os pseudoterminais mestre / escravo, e pode pesquisar usando as chamadas POSIX termios como tcgetattr para ver quais são os modos de terminal atuais.

    
por 26.11.2017 / 03:12
0

O aplicativo Terminal se comunica com o processo shell (bash) por meio de um dispositivo pty (pseudotty). Quando o bash ou outro processo entra no modo "senha", ele altera as propriedades do dispositivo pty enviando uma sequência de escape ANSI

Não tenho certeza se outro processo pode interceptar a comunicação (tenho que verificar meus livros POSIX).

    
por 11.11.2016 / 18:05