Ctrl- Qé de fato a resposta. Eu pensei em relatar um pouco dessa história que é muito longa para caber nas margens da resposta correta do ak2 .
Na era 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. No momento em que o Unix estava desenvolvendo, o código ASCII já estava bem estabelecido (embora o código EBCDIC concorrente da IBM ainda fosse uma força a ser reconhecida).
Os primeiros terminais mantinham um registro impresso de todos os caracteres recebidos. Contanto que os caracteres não cheguem mais rápido do que a cabeça de impressão possa digitá-los, pelo menos. Mas assim que os terminais baseados em CRT foram possíveis, surgiu o problema de que apenas cerca de 25 linhas cabiam no CRT e 25 linhas de 80 caracteres representavam RAM suficiente para que ninguém pensasse seriamente em fornecer mais RAM para caracteres que rolavam do topo da tela. a tela.
Por isso, foi necessária alguma convenção para sinalizar que o final do envio deveria fazer uma pausa para permitir que o leitor o alcançasse.
O código ASCII de 7 bits possui 33 pontos de código dedicados ao controle de caracteres (0 a 31 e 127). Alguns dos que tinham propósitos muito bem estabelecidas, tais como NUL
(líder fita de papel em branco para threading, lacunas, e emendas), DEL
( "riscado" personagens na fita de papel indicados por socos todos os sete buracos), BEL
(ding!), CR
, LF
, E TAB
. Mas quatro foram definidos explicitamente para controlar o próprio dispositivo terminal ( DC1
a DC4
aka Ctrl + Q, Ctrl + R, S Ctrl + e Ctrl + T).
Meu melhor palpite é que algum engenheiro pensou que (conforme a mnemônica), "S" para "Parar" e "Q" para "Continuar" não fossem muito ruins e designados DC3
para significar "por favor, pare de enviar" e DC1
signifique "ok" , continue enviando agora ".
Até essa convenção já estava bem estabelecida quando o Unix estava deixando o ninho no Bell Labs para sair para o mundo.
A convenção é conhecida como controle de fluxo de software e é extremamente comum em dispositivos seriais reais. Não é fácil de implementar 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 manipulado antes de qualquer caractere recebido pendente para evitar o envio de mais do que a extremidade receptora pode. lidar com.
Se possível, é amplamente preferido o uso de sinais adicionais fora da banda do fluxo de dados seriais para controle de fluxo. Nas conexões com fio diretamente que podem pagar os fios de sinal adicionais, você encontrará o handshake de hardware em uso, que libera esses caracteres para outros usos.
Obviamente, a janela do terminal de hoje não está usando uma porta serial física real, possui barras de rolagem e não precisa realmente de handshake de software. Mas a convenção persiste.
Lembro-me da alegação de que Richard Stallman recebeu reclamações sobre o mapeamento de Ctrl + S para pesquisa incremental nos primeiros lançamentos do emacs, e que ele era pouco simpático a qualquer usuário que tivesse que depender de uma conexão de fluxo de software de 7 bits.
vim
e pressionei Ctrl-S para salvar minhas edições. Uh-ohXD