
Entonces, estaba jugando Zork 1 y fui a copiar un texto para mostrárselo a un amigo mío, pero accidentalmente olvidé mantener presionada la tecla Mayús al presionar CTRL+ C. Esto detuvo el comando y perdí mis datos de Zork...
¿Hay algún tipo de consejo "útil" que pueda usar para evitar que se detenga el comando al presionar las teclas CTRL+ C?
Tenga en cuenta que Zork se ejecuta dentro de la terminal. Es un juego de terminal en el que das comandos para realizar diferentes acciones.
Respuesta1
CTRL+ Cenvía una señal de interrupción ( SIGINT
, que es la señal número 2) al trabajo en primer plano. Puedes desactivar esto "atrapando" la señal usando el trap '' 2
comando antes de iniciar Zork.
Vuelva a habilitar CTRL+ C(desbloquear SIGINT
) con trap 2
.
Consejo: podrías agregar algo como esto a tu ~/.bashrc
:
alias zork="(trap '' 2 && cd ~/path/to/zork/ && frotz ZORK1.DAT)"
De esta manera nunca olvidarás desactivar y volver a activar la señal y será más fácil iniciar el juego con solo escribir zork
en el terminal.
Nota: puede utilizar el nombre de la señal en lugar del número si le resulta más conveniente, es decir, trap '' sigint
o trap '' int
. Simplemente estoy acostumbrado a usar los números, por ejemplo, in kill -9
y demás.
Respuesta2
La combinación de teclas Ctrl+ Cenvía el carácter ^C
(valor de byte 3). Esto hace que el terminal envíe elFIRMAseñal al programa que se ejecuta en primer plano¹. La acción convencional para esta señal es interrumpir el comando actual: los programas diseñados para procesar comandos sucesivos regresan a su mensaje de nivel superior, mientras que los programas diseñados como un solo comando por lotes o una interacción continua salen. Evidentemente el programa que estás utilizando fue diseñado según el segundo modelo.
Esta clave de envío de señales es una característica de la interfaz general del terminal en el kernel, compartida por todos los emuladores de terminales y terminales físicos reales. Puede configurar qué tecla envía esta señal, así como otras teclas (en particular, CtrlZenviarSIGSTOPsuspender el programa en primer plano) con elstty
dominio. Para cambiar la clave de SIGINT a Ctrl+ _(en el terminal actual):
stty intr '^_'
Para desactivarlo por completo:
stty intr ''
Para restablecer todas las configuraciones a los valores predeterminados:
stty sane
La clave no puede ser una combinación de claves arbitraria, tiene que ser un valor de un solo byte. stty
Los programas pueden anular la configuración: algunos programas (especialmente los programas en modo de texto de pantalla completa) realizan su propio procesamiento de atajos de teclado.
¹ Más precisamente, a todos los procesos delprimer plano grupo de procesopara el cual el terminal es elterminal de control.