Então, eu estava tocando Zork 1 e copiei um texto para mostrar a um amigo meu, mas acidentalmente esqueci de segurar a tecla Shift ao pressionar CTRL+C . Isso interrompeu o comando e eu perdi meus dados do Zork ...
Existe algum tipo de dica "útil" que eu possa usar para impedir a interrupção do comando ao pressionar as teclas CTRL+ C?
Observe que o Zork é executado dentro do terminal. É um jogo baseado em terminal no qual você dá comandos para executar ações diferentes.
Respostas:
A combinação de teclas Ctrl+ Cenvia o caractere
^C
(valor de byte 3). Isso faz com que o terminal envie o SIGINT sinal para o programa em execução em primeiro plano¹. A ação convencional para esse sinal é interromper o comando atual: os programas projetados para processar comandos sucessivos retornam ao prompt de nível superior, enquanto os programas são projetados como um único comando em lote ou como uma saída de interação contínua. Evidentemente, o programa que você está usando foi projetado de acordo com o segundo modelo.This signal-sending key is a feature of the general terminal interface in the kernel, shared by all terminal emulators and real physical terminals. You can configure which key sends this signal, as well as other keys (most notably CtrlZ sending SIGSTOP to suspend the foreground program) with the
stty
command. To switch the key for SIGINT to Ctrl+_ (in the current terminal):Para desativá-lo completamente:
Para redefinir todas as configurações para o padrão:
A chave não pode ser uma combinação arbitrária de chaves, deve ser um valor de byte único. A
stty
configuração pode ser substituída por programas - alguns programas (especialmente programas em modo de texto em tela cheia) executam seu próprio processamento de atalho de teclado.Precisely Mais precisamente , para todos os processos no grupo de processos em primeiro plano para os quais o terminal é o terminal de controle .
fonte
CTRL+ Cenvia um sinal de interrupção (
SIGINT
que é o número de sinal 2) para o trabalho em primeiro plano. Você pode desativar isso "interceptando" o sinal usando otrap '' 2
comando antes de iniciar o Zork.Reative CTRL+ C(desmarque
SIGINT
) comtrap 2
.Dica : você pode adicionar algo assim ao seu
~/.bashrc
:Dessa forma, você nunca esquecerá de desativar e reativar o sinal e é mais fácil iniciar o jogo apenas digitando
zork
no terminal.Nota : você pode usar o nome do sinal em vez do número, se for mais conveniente para você,
trap '' sigint
ou seja, outrap '' int
. Estou acostumado a usar os números, por exemplo, inkill -9
e tal.fonte