Ctrl - Q é de fato a resposta. Eu pensei em lançar um pequeno histórico disso que é muito longo para caber nas margens de resposta correta do ak2 .
De volta à idade das trevas, um terminal era um grande equipamento conectado a um dispositivo remoto (originalmente outro terminal, porque os teletipos eram muito mais fáceis de aprender a operar do que uma tecla telegráfica) por um fio longo ou por linhas telefônicas. com modems. Quando o Unix estava em desenvolvimento, o código ASCII já estava bem estabelecido (embora o código EBCDIC concorrente da IBM ainda fosse uma força a ser considerada).
Os primeiros terminais mantinham um registro impresso de cada caractere recebido. Contanto que os personagens chegassem não mais rápido do que a cabeça de impressão poderia digitá-los, pelo menos. Mas assim que os terminais baseados em CRT eram possíveis, surgiu o problema de apenas 25 linhas caberem no CRT, e 25 linhas de 80 caracteres representavam RAM suficiente que ninguém pensava seriamente em fornecer mais RAM para caracteres que tinham rolado para fora do topo a tela.
Portanto, foi necessária alguma convenção para sinalizar que o final do envio deve parar para que o leitor alcance o atraso.
O código ASCII de 7 bits possui 33 pontos de código dedicados a caracteres de controle (0 a 31 e 127). Algumas delas tinham propósitos bem estabelecidos, como NUL
(líder de fita de papel em branco para encadeamentos, lacunas e emendas), DEL
(caracteres "riscados" em fita de papel indicados ao perfurar todos os sete orifícios), BEL
(ding!), CR
, LF
e TAB
. Mas quatro foram definidos explicitamente para controlar o próprio dispositivo de terminal ( DC1
to DC4
também conhecido como Ctrl + Q, Ctrl + R, Ctrl + S e Ctrl + T).
Meu melhor palpite é que alguns engenheiros pensaram que (como mnemônicos), "S" para "Parar" e "Q" para "Continuar" não eram muito ruins, e DC3
significa "por favor, parem de enviar "e DC1
significa" ok, continue enviando agora ".
Mesmo essa convenção já estava bem estabelecida quando a Unix estava deixando o ninho na Bell Labs para sair ao mundo.
A convenção é conhecida como controle de fluxo de software e é extremamente comum em dispositivos seriais reais. Não é fácil implementá-lo corretamente, pois impede o uso de qualquer um desses caracteres para qualquer outra finalidade no canal de comunicação, e o sinal de parada deve ser tratado antes de qualquer caractere recebido pendente para evitar o envio de mais do que o terminal receptor. manusear.
Se for prático, usar sinais adicionais fora da banda do fluxo de dados serial para controle de fluxo é muito preferido. Em conexões com fio direto que podem arcar com os fios de sinal adicionais, você encontrará o handshake de hardware em uso, o que libera esses caracteres para outros usos.
Naturalmente, a janela de terminal de hoje não está usando uma porta serial física real, tem barras de rolagem e realmente não precisa de handshaking de software. Mas a convenção persiste.
Eu me lembro da afirmação de que Richard Stallman recebeu reclamações sobre seu mapeamento Ctrl + S para pesquisa incremental nas primeiras versões do emacs, e que ele não era simpático a nenhum usuário que dependesse de um fluxo de software de 7 bits conexão controlada.